JavaSE 异常之运行异常

99 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情

try/catch

可以处理异常,并且出现异常后代码也不会死亡

  • 捕获异常和处理异常的格式:捕获处理
  • 监视捕获处理异常写法:Exception 可以捕获处理一切异常类型

Throwable成员方法:

  • public String getMessage():返回此 throwable 的详细消息字符串
  • public String toString():返回此可抛出的简短描述
  • public void printStackTrace():把异常的错误信息输出在控制台

运行异常

基本介绍

继承自 RuntimeException 的异常或者其子类,编译阶段是不会出错的,是在运行时阶段可能出现的错误,运行时异常编译阶段可以处理也可以不处理,代码编译都能通过

常见的运行时异常

  1. 数组索引越界异常:ArrayIndexOutOfBoundsException
  2. 空指针异常:NullPointerException,直接输出没问题,调用空指针的变量的功能就会报错
  3. 类型转换异常:ClassCastException
  4. 迭代器遍历没有此元素异常:NoSuchElementException
  5. 算术异常(数学操作异常):ArithmeticException
  6. 数字转换异常: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,会吞掉异常