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,会吞掉异常