eclipse 无法访问的catch块java练习

7cwmlq89  于 2022-11-04  发布在  Eclipse
关注(0)|答案(3)|浏览(158)

我正在为考试做一些java练习,其中一些练习我有问题,比如:这是代码:

public class A1 {

public static void main(String [] argv)
        throws Exception {
    try {
        m();
        System.out.print(1);
    }
    catch( Exception u ) {
        System.out.print(2);
    }
    finally {
        System.out.print(3);
        throw( new MyExc2() );
    }
}
static void m()
        throws Exception {
    try {
        System.out.print(4);
    }
    catch( MyExc2 t ) {
        System.out.print(5);
    }
    catch( MyExc1 h ) {
        throw( new MyExc1() );
    }
    catch( Exception b ) {
    }
    finally {
        System.out.print(6);
    }
  }
}

异常层次结构为:

class MyExc1 extends Exception { }
class MyExc2 extends Exception { }
class MyExc3 extends MyExc2 { }

编译器给予我这个错误:“MyExc2的catch块不可达。try语句体不会抛出此异常”?为什么不可达的事实很重要,编译器不能忽略它吗?(抱歉我的英语不好,希望你能理解)

iyfjxgzm

iyfjxgzm1#

无法访问MyExc2的catch块中的代码,因为在System.out.print(4)处调用的println方法未声明引发MyExc2异常的可能性。

wpx232ag

wpx232ag2#

你问的答案是更多的是知道为什么是遥不可及的,但我要离开我的观点:
有一些异常是永远不会在方法体中处理的,相反,您只需将其作为方法的一部分抛出,如下所示:

public Object nMethod(nParamType nParamName) throws myExc2 {}

试着用那种方式来解决你的练习题,我也为你糟糕的英语感到抱歉。

相关问题