zoukankan      html  css  js  c++  java
  • Java异常处理机制

    Java异常处理机制

      软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是:Exception。在Java的异常处理机制中,引进了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。 所谓异常处理,就是指程序在出现问题时依然可以正确的执行完。
    Java是采用面向对象的方式来处理异常的。处理过程:
    1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。
    2. 捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。
    常见的异常:
    1:ArithmeticException 数学异常,被0除
    2:InputMismatchException 输入类型不匹配异常 
    3:java.lang.ArrayIndexOutOfBoundsException:数组下标越界异常。
    4:java.io.IOException : javaIO 异常。
    5:java.lang.NullPointerException:空指针异常,使用了尚未初始化的对象。
    异常的分类:

    Error
    Error是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。

    Exception
    Exception是程序本身能够处理的异常,如:空指针异常(NullPointerException)、数组下标越界异常(ArrayIndexOutOfBoundsException)、类型转换异常(ClassCastException)、算术异常(ArithmeticException)等。
    Exception类是所有异常类的父类,其子类对应了各种各样可能出现的异常事件:Java异常可分为:
    1. RuntimeException 运行时异常  
    2. CheckedException 已检查异常

    RuntimeException运行时异常
    这类异常通常是由编程错误导致的,所以在编写程序时,并不要求必须使用异常处理机制来处理这类异常,经常需要通过增加“逻辑处理来避免这些异常”。
    空指针异常:


    解决空指针异常:

    数组角标越界异常:

    CheckedException已检查异常
      所有不是RuntimeException的异常,统称为Checked Exception,又被称为“已检查异常”,如IOException、SQLException等以及用户自定义的Exception异常。 这类异常在编译时就必须做出处理,否则无法通过编译.

    异常处理方式:常的处理方式有两种:使用“try/catch”捕获异常、使用“throws”声明异常。
    异常的处理方式之一:捕获异常
         捕获异常是通过3个关键词来实现的:try-catch-finally。用try来执行一段程序,如果出现异常,系统抛出一个异常,可以通过它的类型来捕捉(catch)并处理它,最后一步是通过finally语句为异常处理提供一个统一的出口,finally所指定的代码都要被执行(catch语句可有多条;finally语句最多只能有一条,根据自己的需要可有可无)。
    注意点:
    1、一个try语句必须带有至少一个catch语句块或一个finally语句块,当异常处理的代码执行结束以后,不会回到try语句去执行尚未执行的代码。
    2、每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。
    3、不管是否发生了异常,即使try和catch块中存在return语句,finally都必须要执行
    4、finally语句块只有一种情况是不会执行的,那就是在执行finally之前遇到了System.exit(0)结束程序运行。
    异常的处理方式之二:声明异常(throws子句)
    当CheckedException产生时,不一定立刻处理它,可以再把异常throws出去。如果一个方法抛出多个已检查异常,就必须在方法的首部列出所有的异常,之间以逗号隔开。
    throw:
    1:只能用于方法体内。
    2:后面跟异常对象。
    3:只能跟一个异常对象
    throws:
    1:用在方法的声明处。参数列表的后面方法体的前面。
    2:后面跟异常的类型。
    3:可以跟多个异常类型。使用 逗号 分隔。

  • 相关阅读:
    Sharepoint2013:日期控件报错
    Sharepoint2013:在页面上显示错误信息
    BeforeProperties/AfterProperties in Event Receivers
    一个ORM的实现(附源代码)
    DBHelper (支持事务与数据库变更)
    TypeError: <flask_script.commands.Command object at 0x00000201F36629E8>: option values must be strings
    Flask启动时报错:ValueError: urls must start with a leading slash
    {TypeError}__init__() takes from 1 to 2 positional arguments but 3 were given
    pycharm2019激活方法(有效期到2100年1月1日)
    Warning | 3719 | 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
  • 原文地址:https://www.cnblogs.com/cao-yin/p/9607912.html
Copyright © 2011-2022 走看看