首页 > 技术文章 > Java 异常

Xmingzi 2017-03-28 17:21 原文


异常:在运行时期发生的不正常。
    (异常处理代码)和(正常逻辑代码)分离。将问题封装为对象抛出。

异常体系:
    Throwable
    Error        不可处理的    有jvm抛出的严重问题    子类不是
    Exception    可以处理的    
        编译时被检测异常    Exception和其子类        不处理就编译失败
            希望在编译时就处理的异常,这种问题都有对应的处理方式。
            继承Exception
        运行时被检测异常    RuntimeException和其子类        编译器不检查,不处理不会编译失败
            RuntimeException不用被抛出(抛出也没用,处理不了),一旦出现,程序停止运行。
            这种问题一旦发生,功能无法继续,更多是由调用者的原因导致的。
            所以不做处理,在运行时让程序直接停止,让调用者调整代码。
            继承RuntimeException

RuntimeException和Error    
    RuntimeException是在正常运行时出现的,Error是无法让程序正常运行。

创建异常类:
     当一个异常情况只有在自己的项目中才会出现(特有情况)。就使用异常描述。
    继承异常类(Exception或者RuntimeException),定义空参构造函数,使用super(s)定义有参构造函数。

处理异常:
    能处理就处理,不能处理就抛出,交给调用者处理。
    try{}catch(异常类  变量){}finally{}
        上面这个变量用于接收发生的异常,和形参类似
        catch用于处理异常情况。
    try{}catch(异常类1  变量){}catch(异常类2  变量){}finally{}
        按顺序catch,一定要把子类异常写在前面,父类的放在后面。
    抛出:
        Throws关键字:
            声明抛出异常。
            Throws 异常类,异常类2...;
        Throw关键字:
            Throw 异常对象;
            将异常实例抛出给调用者。
    在catch中抛出
        try{}catch(异常类1  变量){Throw 异常对象}finally{}
        这里抛出异常也是一种处理方式。抛出的异常可使用调用者熟悉的另一种异常。

继承与异常:
    1:父类抛出了异常,则子类也需要抛出(抛出的异常可以是父类的异常,也可以是其子类)
    2:父类抛出多个异常,则子类抛出异常的子集。
    3:父类没有抛出异常,则子类不能抛异常。
















推荐阅读