一、使用throws声明抛出异常的思路是:当前方法不知道如何处理这种类型的异常,该异常应该由上级调用者处理;如果main方法也不知道如何处理这种类型的异常,也可以使用throws声明抛出异常,该异常将交给JVM处理。JVM对异常的处理方法是,打印异常的跟踪栈信息,并中止程序运行。
throws声明抛出异常的格式:
throws 异常类1,异常类2,异常类3,...
举例:public void main(String[] args) throws IOException , ClassNotFoundException {//抛出异常
String[] strs = { "18" };
intDivide(strs);
}
二、Java也允许程序自行抛出异常,自行抛出异常使用throw语句来完成(注意此处的 throw没有后面的s)
如果需要在程序中自行抛出异常,则应使用throw语句,throw语句可以单独使用, throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。
public void intDivide (String[] args) throws IOException {
if(strs.length <2){
//自行抛出 Exception 异常
//该代码必须处于try块里,或处于带 throws 声明的方法中
throw new Exception("参数个数不够");
}
if(strs[1] != null && strs[1].equals("0")){
//自行抛出 RuntimeException异常,既可以显式捕获该异常
//也可完全不理会该异常,把该异常交给该方法调用者处理
throw new RuntimeException("除数不能为0");
}
int a = Integer.parseInt(strs[0]);
int b = Integer.parseInt(strs[1]);
int c = a / b;
}
运行结果如下: