异常处理的两种方式
异常处理的两种方式
一、使用throws关键字,声明异常,交给方法的调用者处理,最终交个JVM处理(中断处理)
JVM中断处理,后面的后续代码就不会执行了。
throws使用格式:
当一个方法抛出了异常,就在方法声明时使用throws关键字,将异常交给方法调用者处理
修饰符 返回值类型 方法名(参数列表) throws AAAException, BBBException {
//method body
}
注意:1、如果throws的多个异常是子父类关系,那么就只用声明父类
2、调用了声明异常的方法,那么就必须处理这些声明的异常,要么是继续throws,交给别人处理,要么就try...catch自己处理
package cn.zhuobo.day12.aboutException;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo01Throws {
public static void main(String[] args) throws IOException {// main调用了声明异常的方法,可以选择继续声明异常,继续抛出异常给main的调用者也就是JVM处理
readFile("c:a.taxt");
}
// 这是这三个异常的继承关系:FileNotFoundException extends IOExcetion Exception,因此抛出了两个异常就只用声明父类异常
public static void readFile(String fileName) throws IOException {
if(!fileName.equals("c:a.txt")) {
throw new FileNotFoundException("文件路径不是c:a.txt");
}
if(!fileName.endsWith(".txt")) {
throw new IOException("后缀名不是txt");
}
System.out.println("读取文件");// 如果不符合抛出异常的条件,那么就执行这句话
}
}
二、异常的第二种处理方式,捕获异常try......catch
格式:
try {
可能产生异常的代码
}catch(定义一个异常的变量,用来接收try中抛出的异常对象) {
异常的处理逻辑,接收异常对象之后怎么处理异常,一般在工作中
会把异常记录到一个日志中
}
...// 多个catch
catch(异常类名 变量名) {
try可能抛出多个异常,可以使用多个catch
}finally {
System.out.println("这里的代码无论是否出现异常都会执行,一般用于资源回收");
// finally代码块不能单独使用,和try catch一起使用
// 如果finally代码块里有return语句,那么永远返回finally中的结果,应该避免在finally中写return语句
}
后续代码
注意:
1、try可能回抛出多个异常对象,可以使用多个catch处理这些异常
2、try产生了异常就执行相对应的异常处理逻辑,之后继续执行后续代码
3、没有产生异常就不执行catch,执行完try后,执行后续代码
package cn.zhuobo.day12.aboutException;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Demo02TryCatch {
public static void main(String[] args) {//这里没有throws声明抛出异常
try {
// 可能产生异常的代码
readFile("sss");
}catch (IOException e) {// try里抛出什么异常对象,catch就声明什么异常变量,接收抛出的异常
// 异常的处理逻辑
System.out.println("后缀名不是txt");
}
//与throws不同的是,自己try catch处理异常,不是交个方法调用这JVM处理,就不会中断处理,后续代码可以继续执行
System.out.println("这些都是后续的代码");
}
public static void readFile(String fileName) throws IOException {// 如果结尾不是txt,这个方法会产生一个异常对象
if(!fileName.endsWith(".txt")) {
throw new IOException("后缀名不是txt");
}
}
}
原文转自:
https://www.cnblogs.com/zhuobo/p/10636557.html