UM2L15——异常处理
UM2L15——异常处理
本章代码关键字
1 | try { } catch { } finally { } //错误捕获 |
Java异常处理
Java中的异常捕获和C#中使用基本一致,语法:
-
如果想要从报错类对象中获取信息,需要使用
getMessage()
-
不管之前的代码块是否发生异常
finally
中的内容都将执行,除了以下的几种情况:-
finally
语句块中发生异常 - 在
finally
之前执行了System.exit()
退出程序 - 程序所在的线程销毁
- 关闭CPU
-
1 | try { |
Java中的常见异常类
-
NullPointerException
:空指针异常 -
IOException
:输入输出异常 -
FileNotFoundException
:文件为找到异常 -
ArrayIndexOutOfBoundsException
:数组越界异常 -
NegativeArraySizeException
:数组元素个数为负数抛出异常 -
ClassCastException
:类型转化异常 -
ArithmeticException
:算数异常 -
ArrayStoreException
:数组包含不兼容的值抛出的异常 -
ClassNotFoundException
:未找到相应类异常
等等
Java中自定义异常
继承Exception
异常基类,实现一个有参构造函数,我们需要通过throw
关键字自己抛出异常对象
1 | public class MyExcepton extends Exception{ |
1 | try { |
输出:
1 | 数组容量不合法 |
自定义异常类还有作用是可以通过自己声明的成员变量,来携带更多的报错相关消息
1 | public class MyExcepton extends Exception{ |
1 | try { |
输出:
1 | 数组容量不合法:数组容量为:-3 |
方法中抛出异常
如果某个方法可能发生异常,但是又不想在方法内处理这个异常,想在调用这个方法的外部进行处理
那么就可以可以使用throws
关键字在声明方法时抛出可能的异常,多个异常可以使用逗号分割
那么外部调用该方法时,发生对应异常时即可进行处理
注意:
继承时,覆盖有抛异常的方法时,该方法必须抛出相同的异常或者异常的子类
如果父类中方法抛出多个异常,那么子类的覆盖方法必须抛出那些异常的子集,不能抛出新异常
1 | public static void Test() throws ArrayIndexOutOfBoundsException, NegativeArraySizeException { |
输出:
1 | 容量为负数 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!