• Java异常详解


    异常概念:

    异常(Exception) :是指程序在运行中的出现的错误,程序本身可以捕获并处理,异常能被程序本身可以处理,错误是无法处理。例如:在进行除法运算时,若除数为0,则程序运行时会自动抛出算数异常。

    Java 异常 :也是通过一个对象来表示的,程序运行时抛出的异常,实际上就是一个异常对象,该对象中不仅封装了错误的信息,还提供了一些处理方法。

    异常体系结构:

    常见的异常类列表

    注意:若不知道代码抛出是那种异常,可以指定它们的父类 Throwable 和 Exception。

    异常分类:运行时异常和编译异常

    1、运行时异常(不受检异常):RuntimeException类极其子类表示JVM在运行期间可能出现的错误。比如说试图使用空值对象的引用(NullPointerException)、数组下标越界(ArrayIndexOutBoundException)。此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。

    2、编译异常(受检异常):Exception中除RuntimeException极其子类之外的异常。如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,否则编译不通过。在程序中,通常不会自定义该类异常,而是直接使用系统提供的异常类。

    异常的处理机制

    jvm默认的异常处理方式:在控制台打印错误信息,并终止程序。

    抛出异常, 调用者处理 (throw/throws)

    方法上直接throws抛出

    捕获异常,自己处理 (try-catch(finally))
    try {
           //可能产生的异常的代码区
       }catch (ExceptionType1 e) {
           //捕获并处理try抛出异常类型为ExceptionType1的异常
       }catch (ExceptionType2 e){
           //捕获并处理try抛出异常类型为ExceptionType2的异常
       }finally{
           //无论是出现异常,finally块中的代码都将被执行
       }

    try catch finally 执行顺序结论

      1、不管有没有出现异常,finally块中代码都会执行;

      2、当try和catch中有return时,finally仍然会执行;

      3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,

           不管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;

      4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

      以下几种情况,finally代码块不会被执行:

      1、 在前边的代码中使用System.exit()退出应用。

      2、 程序所在的线程死亡或者cpu关闭

      3、 如果在finally代码块中的操作又产生异常,则该finally代码块不能完全执行结束,同时该异常会覆盖前边抛出的异常。

    我话讲完!谁赞成?谁反对?
  • 相关阅读:
    DFS(深度优先搜索)
    dp动态规划 之 背包问题
    python选择排序的实现
    python冒泡排序实现
    python 数据类型
    SyntaxError: Missing parentheses in call to 'print'
    MFC位图传送错误之一
    SyntaxError :invalid syntax
    Python之命令行参数
    Python之print
  • 原文地址:https://www.cnblogs.com/wffzk/p/15662122.html
Copyright © 2020-2023  润新知