Java教程

Day 15

本文主要是介绍Day 15,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

异常 Exception

 

 

 

Error(错误):java虚拟机无法解决的问题,必须崩溃。 如:StackOverFlow, outOfMemory

Exception(异常): 分为 运行时异常[程序运行时发生的异常] 和 编译时异常[编译时,编译器检查出的异常]

 

 

运行时异常:RuntimeException

1. NullPointerException

2. ArithmeticException

3. ArrayIndexOutOfBoundsException

4. ClassCastException

5. NumberFormatException

 

编译异常: 必须处理,否则代码无法通过编译

1. SQLException

2. IOException

3. FileNotFoundException

 

异常处理方式:

1. try-catch-finally(可省略)

 

 

2. throws

 

 

细节:

1. 在try 代码块中,如果出现异常了,则try块中异常后面的代码不再执行, 直接进入catch 块

2. 如果没有出现异常,则不会进入catch 块

3. finally 块中的代码无论try中的代码有无异常,都会被执行! 通常将 释放资源,关闭连接的代码放在finally块里。

4. 如果try 代码块里有多个异常, 就可以写多个catch 分别捕获, 但是必须把父类异常写在下面,子类异常写在上面

5. 也可以只使用 try-finally, 如果有异常出现,finally中的代码会继续执行,之后程序崩掉。 finally外的代码不会再执行

 

 

 

6. 子类重写父类的方法时,子类抛出的异常类型 必须是 父类抛出异常类型的子类或者和父类的相同! 

 

 

 

 

这里f3() 报错的原因是:  因为f3方法抛出了一个 编译异常, 但是f1方法并没有处理,所以调用f3()报错。

    如果f3方法抛出的是 运行异常,则不会报错;   所以如果抛出的是编译异常,f1方法必须throws 或者 try-catch

 

 

 

自定义异常:

需要继承RuntimeException,因为比较方便,无需在 出现该异常的方法中显示的写出throws

 

 

 

 

 

throw  和   throws  的区别:

 

这篇关于Day 15的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!