Java:捕获异常

语法结构

 

1.捕获异常语法结构:

 

 

 

红框:使用try{}块来抛出异常

蓝框:使用try{}块来抛出异常

橙框:由于对循环体中的异常进行了捕获处理,所以该行代码可以执行 

 

2.try…catch…finally异常处理结构中,try语句块是必须的,  catchfinally语句块至少出现一个。

 

3.注意如果try语句块包含的是检查时异常,则在没有通过throws抛出该异常类的情况下,try必须和catch一起使用,当该行代码去掉或注销掉时,catch相应的异常语句块必须去掉,如下代码:

 

 

注:由于该行代码抛出检查时异常,所以该行代码去掉或注销掉时,catch相应的异常语句块必须去掉。 

 

 

多重catch

 

1.try语句块中的代码可能会引发多种类型的异常,当引发异常时,会按顺序查看每个 catch 语句,并执行第一个与异常类型匹配的catch语句,其后 catch 语句被忽略。

 

 

 

2.在捕获异常的时候,应按照“从小到大”的顺序捕获异常,即先子类后父类。 

 

 

 

3.先子类异常,后父类异常:ArrayIndexOutOfBoundsException异常类是RuntimeException的子类,而RuntimeException异常类是Exception的子类,他们的先后顺序不能颠倒。 

 

 

finally关键字

1.Java异常在try/catch块后加入finally块,可以确保无论是否发生异常 finally块中的代码总能被执行。 

 

 

 

红框:无论是否异常,都将执行finally块中语句。即使return也不例外。仅当程序调用System.exit(1)才不执行该块。

 

 

final、finally和finalize区别

 

 

  • final—修饰符(关键字),修饰的类不能被继承,修饰的方法不能被重写,修饰的变量为常量。
  • finally—在异常处理时提供 finally 块来执行任何清除操作。
  • finalize—方法名,finalize() 方法在垃圾收集器将对象从内存中清除之前做必要的清理工作,如下代码: