【问题标题】:Which Exception get priority Checked or Unchecked ? and Why?哪个异常得到优先检查或未检查?为什么?
【发布时间】:2017-05-09 07:38:27
【问题描述】:

我自己写了两个自定义异常,一个是选中的,另一个是未选中的 当我执行我的代码时只显示检查异常为什么我无法获得未经检查的异常输出??

    class Test {  
   public static void main(String args[]) throws CheckedException {
       int i=0;
       int j=0;
       if(i==0){
           throw new CheckedException("Got Checked Exception");
       }
       if(j==0){
           throw new UncheckedException("Got Unchecked Exception");
       }
   }
}
class CheckedException extends Exception{
    CheckedException(String s){
        super(s);
    }
}
class UncheckedException extends RuntimeException{
    UncheckedException(String s){
        super(s);
    }
}

上述程序的输出是:Got Checked Exception ,但我期待两个输出 Got Checked Exception && Got Unchecked Exception。我在这里犯了什么错误?我该如何克服这个问题?

【问题讨论】:

  • 因为 UncheckedException 不可访问。将int i=0更改为i=1,您会看到UncheckedException
  • 你看不到这两个例外。如果第一个被抛出,该方法将离开。
  • 好的,现在我先写了 UncheckedException 然后 CheckedException 现在输出显示 UncheckedException ,但是我想要两个 Exception ,有没有办法同时获得两个异常输出??
  • 不,没有。如果您使用调试器,您就会明白为什么。抛出第二个异常的代码没有被执行
  • 不客气

标签: exception exception-handling checked-exceptions unchecked-exception


【解决方案1】:

在您的程序中,您在 main() 方法中使用了 throws,并且您已初始化 i=0 和 j=0。

第一个 if(i==0) 满足并产生异常,程序停止。这就是为什么第二个 if 条件部分没有执行。

如果你想检查第二个条件初始化,我用 0 以外的东西

喜欢 i=1 并执行

您也可以使用单独的 try catch 块来测试这两种情况

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    相关资源
    最近更新 更多