美文网首页
异常深入剖析

异常深入剖析

作者: 喧嚣城外 | 来源:发表于2021-02-09 23:20 被阅读0次
    try{ ... } catch(Exception e){ ... } finally{ ... }
    
    • try:是用来监测可能会出现异常的代码段。
    • catch:是用来捕获 try 代码块中某些代码引发的异常,如果 try 里面没有异常发生,那么 catch 也一定不会执行。在 Java 语言中,try 后面可以有多个 catch 代码块,用来捕获不同类型的异常,需要注意的是前面的 catch 捕获异常类型一定不能包含后面的异常类型,这样的话,编译器会报错。
    • finally:不论 try-catch 如何执行,finally 一定是最后执行的代码块,所有通常用来处理一些资源的释放,比如关闭数据库连接、关闭打开的系统资源等。

    需要注意的是 Java 虚拟机会从上往下匹配错误类型,因此前面的 catch 异常类型不能包含后面的异常类型。

    错误试例

    try {
      // ...
      int i = Integer.parseInt(null);
    } catch (Exception e) {
    }
    
    • 尽量不要捕捉通用异常,也就像Exception这样的异常,而是应该捕获特定异常,这样更有助于你发现问题。
    • 不要忽略异常,像上面的这段代码只是加了catch,但没有进行任何的错误处理,信息就输出了,这样在程序中出现问题的时候,根本找不到问题出现的原因。

    异常处理对程序性能的影响

    异常处理固然好用,但不能滥用

    • try-catch代码段会产生额外的性能开销,它往往会影响JVM对代码的优化,因此建议仅捕获有必要的代码段,尽量不要一个大的try包住整段的代码。
    • java每实例化一个Exception,都会对当时的栈进行快照,这是一个相对比较重的操作。如果非常频繁,开销不可忽略。

    相关文章

      网友评论

          本文标题:异常深入剖析

          本文链接:https://www.haomeiwen.com/subject/bhujwctx.html