zoukankan      html  css  js  c++  java
  • error/exception/runtime exception区别

    (1)java中的异常是什么?

      异常指的是程序运行过程中出现的非正常情况或错误,当程序违反了语义规则时,jvm就会将出现的错误表示为一个异常抛出。在java中,一切皆对象,异常也是,它被当作一个对象,可以在try块中进行捕获,使用catch进行处理,对于任何情况都要执行的代码,放在finally代码块中。

      上面提到的语义规则有两大类,一个是javaAPI中定义好的,还有一种是自定义的(所有异常类都必须是Trowable的子类)。

    (2)java中异常有哪几种类型

    1. 首先异常类的父类是Throwable。
    2. Throwable类有两大子类:Error,Exception
    3. Error:错误
      1. 程序在运行过程中发生了非常严重的错误,并且该错误是不可恢复的。
      2. 由于类错误是jvm层的错误,因此,此种错误会导致程序的终止运行
      3. 编译器不会检查程序中是否有错误
    4. Exception:异常
      1. 异常是可恢复的
      2. Exception可以分为CheckedException和RuntimeException
      3. checkedException(检查异常):
        1. 最常见的就是IO异常,和sql异常。这种异常通常发生的编译阶段
        2. 编译器会强制要求程序员去捕获此类异常
        3. 异常的发生不会导致程序出错
        4. 对异常处理之后程序还能继续运行
        5. 程序依赖于不可靠的外部条件
      4. RuntImeException(运行时异常):
        1. 程序在运行的时候发生的异常
        2. 编译器没有去强制对其进行捕获并处理
        3. 如果不对这类异常进行处理,jvm将会对其处理。例:空指针异常
        4. 出现运行时异常,系统会将异常向上抛出,知道遇到处理代码为止。
        5. 如果没有就跑到最上层(main/run),抛出之后,程序也就退出了

    (3)finally中的代码什么时候执行?

    1. 不管try中是否发生异常,finally都会执行(以下几种情况除外) 
    2. try-finally,try-catch-finally代码中的return语句优先级高于代码块外面的,也就是try-finally,try-catch-finally代码块中的return将覆盖其他的return语句

    (4)finally中的代码什么情况不会被执行?

    1. finally对应的try-catch-finally之前有运行时异常未被处理
    2. finally之前强制退出程序(System.exit(0))
    3. finally之前调用return结束函数的运行

     

     

  • 相关阅读:
    sourcetree提交代码到远程仓库的方法
    使用sourcetree管理拉取代码的方法
    运用在伪类content上的html特殊字符
    H5在ios弹窗状态下调起输入法后关闭输入法页面元素错位解决办法
    Sticky footer经典布局--绝对底部布局
    Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法
    如何在开发时用PC端对移动端页面进行调试
    SVN使用教程总结
    Keywords Search HDU2222 AC自动机模板题
    POJ
  • 原文地址:https://www.cnblogs.com/excellencesy/p/9205615.html
Copyright © 2011-2022 走看看