开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情
try/catch
可以处理异常,并且出现异常后代码也不会死亡
- 捕获异常和处理异常的格式:捕获处理
- 监视捕获处理异常写法:Exception 可以捕获处理一切异常类型
Throwable成员方法:
public String getMessage():返回此 throwable 的详细消息字符串public String toString():返回此可抛出的简短描述public void printStackTrace():把异常的错误信息输出在控制台
运行异常
基本介绍
继承自 RuntimeException 的异常或者其子类,编译阶段是不会出错的,是在运行时阶段可能出现的错误,运行时异常编译阶段可以处理也可以不处理,代码编译都能通过
常见的运行时异常:
- 数组索引越界异常:ArrayIndexOutOfBoundsException
- 空指针异常:NullPointerException,直接输出没问题,调用空指针的变量的功能就会报错
- 类型转换异常:ClassCastException
- 迭代器遍历没有此元素异常:NoSuchElementException
- 算术异常(数学操作异常):ArithmeticException
- 数字转换异常:NumberFormatException
处理机制
运行时异常在编译阶段是不会报错,在运行阶段才会出错,运行时出错了程序还是会停止,运行时异常也建议要处理,运行时异常是自动往外抛出的,不需要手工抛出 运行时异常的处理规范:直接在最外层捕获处理即可,底层会自动抛出
public class ExceptionDemo{
public static void main(String[] args){
System.out.println("程序开始。。。。");
try{
chu(10 / 0);//ArithmeticException: / by zero
System.out.println("操作成功!");//没输出
}catch (Exception e){
e.printStackTrace();
System.out.println("操作失败!");//输出了
}
System.out.println("程序结束。。。。");//输出了
}
public static void chu(int a , int b) { System.out.println( a / b );}
}
Finally
用在捕获处理的异常格式中的,放在最后面,finally 的作用:可以在代码执行完毕以后进行资源的释放操作 资源:资源都是实现了 Closeable 接口的,都自带 close() 关闭方法 注意:如果在 finally 中出现了 return,会吞掉异常