第三周:java面向对象部分总结(3)----异常
异常
1、什么是异常
异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。
异常处理是在程序运行的过程中通过处理异常来让程序完成后续的操作。

1 try{ 2 3 可能产生异常的代码 ->可能产生一个异常对象 4 5 }catch(SubException e){ 6 7 异常处理代码 8 9 } 10 11 catch(Exception e){ 12 13 异常处理代码 14 15 }finally{ 16 17 无论是否有异常都会执行的代码 18 19 }
2、几种情况
1、未捕获到异常,程序照常执行
2、有异常并且被捕获,执行catch,程序照常执行
3、有异常未被捕获,程序中断
4、 多catch的情况,对于父类异常应该写在子类异常的后面。否则会编译报错。
5、try…catch…finally的情况
Finally:无论是否发生异常都会执行的代码。
6、在方法中遇到return中的执行流程。

3、throws、throw关键字说明
Throws:用在方法声明处,表示告知调用者此方法可能会产生异常
Throw:程序自行抛出一个异常对象,一般会和throws结合起来一起使用。
public void setAge(int age) throws Exception{ if(age<0||age>120){ //程序自行抛出一个异常 throw new Exception("年龄不合法"); } this.age = age ; } }
4、自定义异常
编写一个类继承Exception
1 public class AgeException extends Exception{ 2 public AgeException(){ 3 super("年龄不合法"); 4 } 5 }
使用的时候直接throw new AgeException即可
5、异常小结:
1、Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。
2、当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为 捕获(catch)异常
3、如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。
程序员通常只能处理异常(Exception),而对错误(Error)无能为力。
4、不要在循环结构包裹try…catch块
6、面试题:
1、关于finally关键字的执行顺序
(1)只return;无返回值,那么return最后执行

(2)return i;有返回值,按从上到下顺序执行。

2、final,finally,finalize关键字区别
-
final
final关键字可以修饰类,属性,方法
被final修饰的属性必须进行初始化,初始化后属性值不可更改。
被final修饰的方法只能使用,不能重写
被final修饰的类,不能再被继承
-
finally
finally是在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获,finally块都会被执行。
-
finalize
finalize是方法名。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。 (简单了解)

浙公网安备 33010602011771号