捕捉基类和派生类作为异常exception

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)
  •   Java 异常

    捕捉基类和派生类作为异常exception

    异常处理 - 捕获基类和派生类作为例外:

    如果基类和派生类都被捕获为异常,则派生类的catch块必须出现在基类之前。

    如果我们先放基类,那么派生类catch块永远不会到达。例如,下面的C ++代码打印出“Caught Base Exception”

    #include<iostream>
    using namespace std;
    
    class Base {};
    class Derived: public Base {};
    int main()
    {
       Derived d;
       // some other stuff
       try {
           // Some monitored code
           throw d;
       }
       catch(Base b) { 
            cout<<"Caught Base Exception";
       }
       catch(Derived d) {  //This catch block is NEVER executed
            cout<<"Caught Derived Exception";
       }
       getchar();
       return 0;
    }
    

    在上面的C ++代码中,如果我们改变catch语句的顺序,那么这两个catch语句都可以被访问。以下是修改后的程序,它会打印“Caught Derived Exception”

    #include<iostream>
    using namespace std;
    
    class Base {};
    class Derived: public Base {};
    int main()
    {
       Derived d;
       // some other stuff
       try {
           // Some monitored code
           throw d;
       }
       catch(Derived d) { 
            cout<<"Caught Derived Exception";
       }
       catch(Base b) { 
            cout<<"Caught Base Exception";
       }
       getchar();
       return 0;
    }
    

    在Java中,编译器本身不允许在派生之前捕获基类异常。在C ++中,编译器可能会给出警告,但编译代码。
    例如,以下Java代码在编译失败时显示错误消息“异常派生已被捕获”

    //filename Main.java
    class Base extends Exception {}
    class Derived extends Base  {}
    public class Main {
      public static void main(String args[]) {
        try {
           throw new Derived();
        }
        catch(Base b) {}
        catch(Derived d) {}
      }
    }
  •   Java 异常
  •   本文标题:捕捉基类和派生类作为异常exception - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/4197.html
      微信返利机器人
      免费:淘宝,京东,拼多多优惠券
      腾讯,爱奇艺,优酷的VIP视频免费解析,免费看
      即刻扫描二维码,添加微信机器人!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注