美文网首页
Java 中的异常处理机制的简单原理和应用

Java 中的异常处理机制的简单原理和应用

作者: 极客天空 | 来源:发表于2020-04-19 16:33 被阅读0次

    何为异常

    异常是指 java 程序运行时(非编译)所发生的非正常情况或错误,与现实生活
    中的事件很相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情
    节等信息,可以用一个对象来表示,Java 使用面向对象的方式来处理异常,它把
    程序中发生的每个异常也都分别封装到一个对象来表示的,该对象中包含有异常
    的信息。

    异常分类

    Java 对异常进行了分类,不同类型的异常分别用不同的 Java 类表示,所有异常
    的根类为 java.lang.Throwable,Throwable 下面又派生了两个子类:Error 和
    Exception
    1.Error
    Error 表示应用程序本身无法克服和恢复的一种严重问题,程序只有
    死的份了,例如,说内存溢出和线程死锁等系统问题
    2.Exception
    表示可恢复的异常,这是可捕捉到的.分为运行时异常,检查性异常.
    也叫系统异常普通异常
    系统异常:即运行时异常,是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死
    掉,例如,数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常
    (NullPointerException)、类转换异常(ClassCastException);

    我们可以不处理。当出现这样的异常时,总是由虚拟机接管。
    出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。
    如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。
    抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。
    运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。
    也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止

    普通异常是运行环
    境的变化或异常所导致的问题,检查性异常,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。

    checked异常:I**O异常,以及SQL异常都是这种异常。 对于这种异常, JAVA编译器强制要求我们必需对出现的这些异常进行catch 。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。 这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误

    解决方案

    java 为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须
    try..catch 处理或用 throws 声明继续抛给上层调用方法处理,所以普通异常也称
    为 checked 异常,而系统异常可以处理也可以不处理,所以,编译器不强制用
    try..catch 处理或用 throws 声明,所以系统异常也称为 unchecked 异常

    自定义异常类

    在开发中根据自己业务的异常情况来定义异常类。
    异常类如何定义

    1. 自定义一个编译器异常:自定义类 并继承 java.lang.Exception
    2. 自定义一个运行时期的异常类:自定义类,并继承于
      java.lang.RuntimeException。

    建议:保留两种构造器的形式
    ①无参构造 ②带给父类的message属性赋值的构造器
    语法格式:
    public class XXXExcepiton extends Exception | RuntimeException{
    添加一个空参数的构造方法
    添加一个带异常信息的构造方法
    }
    注意:

    (1)自定义异常类一般都是以Exception结尾,说明该类是一个异常类
    (2)自定义异常类,必须的继承Exception或者RuntimeException
    继承Exception:那么自定义的异常类就是一个编译期异常,如果方法内部抛出了编译期异常,就必须处理这个异常,要么throws,要么try...catch
    继承RuntimeException:那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理)

    相关文章

      网友评论

          本文标题:Java 中的异常处理机制的简单原理和应用

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