当前位置: 首页 > 面试题库 >

永远不会在相应的try语句的主体中引发异常

姚航
2023-03-14
问题内容

我在Java中进行异常处理时遇到问题,这是我的代码。尝试运行以下行时出现编译器错误:throw new MojException("Bledne dane");。错误是:

永远不会在相应的try语句的主体中引发MojException异常

这是代码:

public class Test {
  public static void main(String[] args) throws MojException {
    // TODO Auto-generated method stub

    for(int i=1;i<args.length;i++){
      try{
        Integer.parseInt(args[i-1]);
      }
      catch(MojException e){
        throw new MojException("Bledne dane");
      }
      try{
        WierszTrojkataPascala a = new WierszTrojkataPascala(Integer.parseInt(args[0]));
        System.out.println(args[i]+" : "+a.wspolczynnik(Integer.parseInt(args[i])));
      }
      catch(MojException e){
        throw new MojException(args[i]+" "+e.getMessage());
      }
    }
  }
}

这是MojException的代码:

public class MojException extends Exception{
    MojException(String s){
        super(s);
    }
}

谁能帮我这个?


问题答案:

try语句中的catch块需要 精确 捕获try {}-block 内的代码 可能 抛出的异常(或该异常的超类)。

try {
    //do something that throws ExceptionA, e.g.
    throw new ExceptionA("I am Exception Alpha!");
}
catch(ExceptionA e) {
    //do something to handle the exception, e.g.
    System.out.println("Message: " + e.getMessage());
}

您想做的是这样的:

try {
    throw new ExceptionB("I am Exception Bravo!");
}
catch(ExceptionA e) {
    System.out.println("Message: " + e.getMessage());
}

这将导致编译器错误,因为您的Java知道您正在尝试捕获永远不会发生的异常。因此,您将获得:exception ExceptionA is never thrown in body of corresponding try statement



 类似资料:
  • 这是我的堆栈代码的数组实现: 这是OverFlowException类: 当我运行这个编译器时给出错误“exception OverFlowException is never thrown in body of response try statement” 然后我意识到我没有包含检查数组是否为isFull()的部分。 我的问题是我在ArrayStack2类中有isFull()方法,以及如何从O

  • 我正在尝试获得PSQLException异常,但是它告诉我这个块无法到达,有人知道为什么吗?我的意思是,我不能运行或任何东西,Eclipse标记为一个错误。但是,例如,如果我放置异常e,而不是PSQLException e,它不会给出错误。

  • 我已经看到过一个类似的问题,但是我还没有找到一个解决方案,因为在我的例子中,放入try子句的函数实际上会引发一个异常。 在my try块中,psv main调用方法,该方法打印2并引发名为myexc3的异常。然后,这个异常应该由处理,它应该打印3等等。但代码实际上并不编译: 异常MyExc3从不在相应try语句的正文中抛出 这是为什么?

  • 我不是太笨,不会意识到“try catch”中的代码不能抛出异常。但是我被困在这里,因为我完全从书中复制了代码,所以它在出版时肯定是正确的。这让我想知道代码是否不能再编译了,因为它已经过时了?我意识到这个问题的性质可能会冒犯在座的一些人。如果是的话,请不要在严厉的斥责中过于严厉。 我得到了一个错误: ./streamcopier.java:13:错误:异常IOException从不在相应try语句

  • 执行此代码时,我收到以下错误: JSONException 从不在相应的 try/catch body 语句中抛出。 你能解释一下为什么抛出这个异常吗?语法在我看来还行。

  • 考虑来自Java文档的以下代码。 根据Java文档, 在示例readFirstLineFromFile中,如果从try块和try with resources语句抛出异常,则方法readFirstLineFromFile抛出从try块抛出的异常;禁止从try with resources块引发的异常。 另一方面,也提到了 由于BufferedReader实例是在try with resource语