优雅的异常处理 -- Java中的异常
优雅的异常处理 – Java中的异常
什么是java的异常
- 代码传入的参数不合适,导致一些问题
- 异常后面想要执行的代码,执行不到了,需要处理异常之后,代码能够继续往下
java异常的分类
异常的处理
1.自己捕获处理
语法:
try{
//可能产生异常的代码
}catch(捕获的异常类型 e){//e是形式参数
//该异常捕获之后要做的操作
}catch(捕获的异常类型 e){//e是形式参数
//该异常捕获之后要做的操作
}finally{
//异常发生之后一定会执行到的语句块:
//①流资源关闭②释放锁
}
语句块执行顺序:
- 顺序执行:进入异常捕获语句块
- 如果产生异常,执行catch捕获,捕获到对应异常,并且对应catch后面的代码块
- finally语句块一定会执行到:前提前面语句没有执行System.exit(0)退出虚拟机
public class _09ExceptionMsg {
/*
* 异常信息的获得而方式
* 1.直接打印异常对象
* 2.通过异常对象,调用getMessage()方法获得
* 3.通过异常对象,调用printStackTrace 打印异常信息
*/
public static void main(String[] args) {
try {
System.out.println(1/0);//产生了一个异常对象
} catch (Exception e) {//捕获异常
System.out.println(e);//打印的捕获的异常对象,toString
String message = e.getMessage();
System.out.println(message);
e.printStackTrace();
}
}
}
2.抛出异常
自己不处理,抛出给别人处理:
- 方法头:throws关键字,抛出异常类型[根据实际情况,后面的代码不需要执行]
- 异常抛出,可以在方法头,抛出多个异常的
- 直接抛出一个大的异常Exception数据类型的兼容
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class _08ThrowsException {
public static void main(String[] args) {
try {
add();
} catch (ParseException b) {
// TODO Auto-generated catch block
b.printStackTrace();
}
System.out.println("在进来一次");
}
static void add() throws ParseException,NullPointerException{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
simpleDateFormat.parse("abc");//采用抛出的方式,后面的代码不会执行的
System.out.println("进来了");//存入账户
}
}