异常:处理/抛出
异常处理:
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}
异常抛出:(向调用方法的上一级抛出一个异常)
public void example() throws RemoteException
{
// Method implementation
throw new RemoteException();
}
自定义异常:异常处理|菜鸟教程
// 文件名InsufficientFundsException.java
import java.io.*;
//自定义异常类,继承Exception类
public class InsufficientFundsException extends Exception
{
//此处的amount用来储存当出现异常(取出钱多于余额时)所缺乏的钱
private double amount;
public InsufficientFundsException(double amount)
{
this.amount = amount;
}
public double getAmount()
{
return amount;
}
}
注意:
- 异常的声明是API的⼀部分
- 异常处理不能代替简单的测试
- 不要过分地细化异常
- 利⽤异常层次结构
- 不要只抛出RuntimeException异常,应该寻找更合适的⼦类或者创建⾃⼰的异常类
- 不要压制异常
- 在检测错误时,“苛刻”要⽐放任更好
- 在出错的地⽅抛出⼀个EmptyStackException异常要⽐在后⾯抛出⼀个NullPointerException异常更好
- 不要羞于传递异常
- 早抛出,晚捕获
处理异常的解决方法:
- Solution 1
- 抛出try语句块中阐述的原始异常,忽略在finally语句块中产⽣的异常
- Solution 2
- 把产⽣的异常都记录下来