异常分类:
异常包含:
- 可检异常(一般异常):一般无法预料。例如,程序需要的文件没有找到。
- 运行时异常:可以被程序员避免。
- 错误:已经脱离程序员的控制的异常。例如,内存空间不够。
异常:
一般异常:
🐵 #面试 #CCQC #一般异常 和 运行时异常 的区别
- 非RuntimeException类的异常即为一般异常。(⭐可以想成:我也晓得,按我的技术会出错,但是我真的无法控制)
- 通常包含了:
- IO异常:IOException
- 数据库异常:SQLException
- 用户自定义的异常
- 编译器将强制要求程序员处理。
-
运行时异常:
🐵 #面试 #CCQC #一般异常 和 运行时异常 的区别
(⭐可以想成:作为一个程序员,我觉得他不得出错)
- 通常包含了:
- 数组越界:IndexOutOfBoundsException
- 空指针(对象):NullPointerException
- 除数为0
- 程序能编译通过,但是在运行时,可能出错。(例如,进行除法时,进行到某一步时,除数为0了。此程序在编译时能编译成功,但是程序运行时会出错。)
异常处理:
抛出异常:
🐵 #面试 #CCQC #throw和throws的区别
throw:
throw用在方法体内部。throw后只能跟一个异常。throw的异常,要么使用方法体内的try-catch处理,要么throws。public class className{public void deposit(double amount) throws RemoteException{// Method implementationthrow new RemoteException();}//Remainder of class definition}
throws:
throws用在方法声明后面。throws后可以跟多个异常,使用,隔开。public class className{public void withdraw(double amount) throws RemoteException,InsufficientFundsException{// Method implementation}//Remainder of class definition}
🐵 #面试 #CCQC #异常处理
处理异常:
try{// 程序代码}catch(异常类型1 异常的变量名1){// 程序代码}catch(异常类型2 异常的变量名2){// 程序代码}finally{// 程序代码}
其中,
catch至少存在一个。finally可以省略不用。- 对于
finally,当try被执行到时,finally里的代码一定会被执行,具体表现在:即使在**try**或者**catch**里执行了**return**,**finally**里的代码也会在**return**前执行。
