• 异常


    常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。

    在Java的异常处理机制中,引进了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。

    Java异常类的层次结
    图片

    Error是程序无法处理的错误,表示运行应用程序中较严重问题。

    Exception是程序本身能够处理的异常,Exception类是所有异常类的父类,其子类对应了各种各样可能出现的异常事件。 通常Java的异常可分为:

    • RuntimeException 运行时异常

    派生于RuntimeException的异常,如被 0 除、数组下标越界、空指针等,其产生比较频繁,处理麻烦,这类异常通常是由编程错误导致的,所以在编写程序时,并不要求必须使用异常处理机制来处理这类异常,经常需要通过增加“逻辑处理来避免这些异常”。

    • CheckedException 已检查异常

    Checked Exception,又被称为“已检查异常”,如IOException、SQLException等以及用户自定义的Exception异常。 这类异常在编译时就必须做出处理,否则无法通过编译。

    处理过程

    1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。
      注意:方法重写中声明异常原则:子类重写父类方法时,如果父类方法有声明异常,那么子类声明的异常范围不能超过父类声明的范围。

    2. 捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。

    捕获异常是通过3个关键词来实现的:try-catch-finally。用try来执行一段程序,如果出现异常,系统抛出一个异常,可以通过它的类型来捕捉(catch)并处理它,最后一步是通过finally语句为异常处理提供一个统一的出口,finally所指定的代码都要被执行(catch语句可有多条;finally语句最多只能有一条,根据自己的需要可有可无)。

    catch捕获异常时的捕获顺序:如果异常类之间有继承关系,在顺序安排上需注意。越是顶层的类,越放在下面,再不然就直接把多余的catch省略掉。 也就是先捕获子类异常再捕获父类异常。

    注:

    1. 即使try和catch块中存在return语句,finally语句也会执行。是在执行完finally语句后再通过return退出。

    2. finally语句块只有一种情况是不会执行的,那就是在执行finally之前遇到了System.exit(0)结束程序运行。

    3. 异常的处理也可以手动抛出异常

    try catch finally return执行循序

    1. 执行try,catch, 给返回值赋值
    2. 执行finally
    3. return
  • 相关阅读:
    android:重写返回键动画
    获得今天零点时间戳(转)
    【转】完美解决Android 9.0以上HTTP网络请求被限制问题
    Java的三种取整方法
    thymeleaf控制checkbox的选中状态回显
    thymeleaf控制checkbox的value值
    Supervisor 简单使用
    关于Requests代理,你必须知道的
    py-spy 常见问题及使用说明
    记一次Scrapy进程卡死的Debug过程
  • 原文地址:https://www.cnblogs.com/pallcard-LK/p/8976375.html
走看看 - 开发者的网上家园