异常分类:
异常包含:
- 可检异常(一般异常):一般无法预料。例如,程序需要的文件没有找到。
- 运行时异常:可以被程序员避免。
- 错误:已经脱离程序员的控制的异常。例如,内存空间不够。
异常:
一般异常:
🐵 #面试 #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 implementation
throw 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**
前执行。