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结束函数的运行

     

     

  • 相关阅读:
    python中不可变数据类型和可变数据类型
    你分得清Python中:“索引和切片”吗?
    Python Django中一些少用却很实用的orm查询方法
    jQuery on()方法
    jquery.flexslider-min.js实现banner轮播图效果
    jQuery 树型菜单插件(Treeview)
    jQuery Growl 插件(消息提醒)
    jQuery Autocomplete 用户快速找到并从预设值列表中选择
    jQuery Accordion 插件用于创建折叠菜单
    jquery.validate.js 验证框架详解
  • 原文地址:https://www.cnblogs.com/excellencesy/p/9205615.html
Copyright © 2011-2022 走看看