异常处理——Java面向对象基础(26)

一、异常相关概念

1.异常(Exception):异常是程序在执行的过程中所产生的问题。Java语言的健壮性-异常就是其中一种体现。

在程序代码提供了异常处理机制

2.异常调用过程

二、异常是如何产生的

throw new 具体的异常类型();

注意:一个方法如果拥有异常处理的包裹,则其不一定需要返回值这解决了,一些数据表达冲突的情况。

 

 

三、异常是如何处理的

异常处理的语法:

try{

           编写代码(提前预知会出现异常)

}catch(异常类型 异常变量名称){

           异常处理……  

}catch(……){

 

}

异常处理的几种方式:

1、捕获这个异常,不让它沿着调用栈继续向下抛出;

2、捕获这个异常,并继续向下抛出;

3、不捕获这个异常,从而导致方法从调用栈中被弹出,异常对象继续抛给调用栈下面的方法。

4、捕获过程中没有出现任何异常,那么整个程序会正常执行。后续代码也会正常执行。

解释几个关键字的含义:

try 用来指定一块预防所有“异常”的程序;

catch 子句紧跟在 try 块后面,用来指定你想要捕捉的“异常”的类型; 

throw 语句用来明确地抛出一个“异常”;

throws 用来标明一个成员函数可能抛出的各种“异常”;

finally 为确保一段代码不管发生什么“异常”都被执行一段代码;

三、finally关键字作用

finally 为确保一段代码不管发生什么“异常”都被执行一段代码。应用场景:释放资源

注意:

1、当finally关键字遇到return时,先执行return返回动作(没有真正的返回),再执行finally中的代码块,最后再回去执行return真正返回操作。

2、当finally遇到break关键字,和遇到return原理差不多。

3、特殊:当finally遇到System.exit(0); 不会去执行了,说白了System.exit(0)最终大哥。

四、异常类型

|- Throwable(所有异常类的父类)

  |-Error(错误)

  |-Exception(异常)

     |-RuntimeException(运行时异常)

         |-StringIndexOutOfBoundsException: 字符串下标越界异常

      |-ArrayIndexOutOfBoundsException: 数组下标越界异常

         |-NullPointerException: 空指针异常

         |-ArithmeticException: 数字计算异常

         |-ClassCastException: 类型转换异常

         |-InputMismatchException: 输入错误匹配异常 

         ……

     |-CheckException(自己定义的、实际没有此类)编译期受检异常

         |-ParseException: 日期解析异常

         |-ClassNotFoundException: 类加载异常

         |-InterruptedException: 中断异常

         |-SQLException: SQL异常

         |-IOExceptionIO异常

        ……

注意:

    1、RuntimeException运行时异常,可以处理也可以不处理。如果不处理它会沿着调用栈继续向下抛出,直至JVM为止。

    2、直接继承Exception编译期受检异常,它必须做处理。要么try catch处理,要么向上继续抛。在方法名后用throws 关键字声明函数可能要抛出的所有异常

编译期受检异常语法:

访问修饰 访问参数 方法名称(……) throws 异常类型,………{

     存在编译期受检异常的代码

五、自定义异常

1.自定义运行时异常

需要继承RuntimeException

 

 2.自定义编译期受检异常

直接继承Exception

 六、抛出异常的顺序

1.抛出的异常顺序,子类异常必须在父类之前

 

 2.异常在同一层时,只会抛出第一个产生的异常,之后的异常不会出现。

 3.当异常不再同一层时,不同的异常都会被显示

 

原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12538627.html