Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示已为某些未处理的已检查异常处理的异常_Java - Fatal编程技术网

Java 显示已为某些未处理的已检查异常处理的异常

Java 显示已为某些未处理的已检查异常处理的异常,java,Java,在meth2()下面的代码块中,抛出ExcepOne和ExcepTwo,自定义异常,扩展Exception,以便检查它们。但是,当我碰巧为IOException编写另一个catch块时,我得到一个编译错误,表示IOException已被捕获。为什么会这样?它在哪里被抓住 public class ExceptionConcepts { /** * @param args the command line arguments */ public static void main(Strin

meth2()
下面的代码块中,抛出
ExcepOne
ExcepTwo
,自定义异常,扩展
Exception
,以便检查它们。但是,当我碰巧为
IOException
编写另一个catch块时,我得到一个编译错误,表示
IOException
已被捕获。为什么会这样?它在哪里被抓住

 public class ExceptionConcepts {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws ExcepOne{

    System.out.println("In main method");
    try{
    meth1();
    }catch(ExcepOne e1)
    {
        System.out.println("Finally caught ExcepOne");
    }
}
public static void meth1() throws ExcepOne{
   try{
    meth2();
   }catch(ExcepTwo e2)
   {
       System.out.println("In meth1 catch for Exceptwo");
       throw new ExcepOne("1ond");
   }

    catch(ExcepOne e1)
   {
       System.out.println("In meth1 catch for ExcepOne");
   }
    catch(IOException ie) // I get a compilation error here
     {

     }
 }
public static void meth2() throws ExcepOne,ExcepTwo{


  int i=-1;
  try{
  if(i<0)
      throw new ExcepOne("one");
   else
      throw new ExcepTwo("two");
  }

  catch(ExcepTwo e1)
  {
      System.out.println("in catch of ExcepTwo");
      throw new ExcepTwo("2");
  }
  catch(ExcepOne e2)
  {
      System.out.println("in catch of ExcepOne");
      throw new ExcepOne("1");
  }
  finally
  {
      System.out.println("I am finally");
      throw new ExcepTwo("2");
  }
 }
}

public class ExcepOne extends Exception()
{
public ExcepOne(String msg)
 {
 super(msg);
 }
} 
public class ExcepTwo extends Exception()
{
public ExcepTwo(String msg)
 {
super(msg);
 }
} 
公共类例外概念{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)抛出ExcepOne{
System.out.println(“主方法中”);
试一试{
meth1();
}渔获物(e1除外)
{
System.out.println(“最终捕获的例外”);
}
}
public static void meth1()抛出异常{
试一试{
meth2();
}捕获(两个e2除外)
{
System.out.println(“例外情况下的meth1捕获”);
抛出新的ExcepOne(“1号”);
}
渔获物(e1除外)
{
System.out.println(“例外情况下的meth1捕获”);
}
catch(IOException ie)//我在这里得到一个编译错误
{
}
}
public static void meth2()抛出ExcepOne,ExcepTwo{
int i=-1;
试一试{
如果(i你失踪了:

import java.io.IOException;
当您将其添加到源中时,将发生以下两种情况之一:
-如果try块可以抛出
IOException
,程序将编译。
-否则,您将得到编译
错误:异常IOException从未在相应的try语句体中抛出

您缺少:

import java.io.IOException;
当您将其添加到源中时,将发生以下两种情况之一:
-如果try块可以抛出
IOException
,程序将编译。

-否则您将得到编译
错误:exception IOException从未抛出到相应的try语句体中

发布代码声明
ExcepTwo
ExcepOne
。我猜其中一个实际上是
IOException
。您确定没有发生错误吗“IOException无法访问的捕获块。”?我发布了ExcepOne和ExcepTwo的代码。请现在检查。谢谢。不,我刚刚重新检查了它!它说“exception IOException已被捕获”。然后我想你需要发布一个简化版的
meth2
。我看不出这里有什么问题(除了您发布的异常没有实际编译)发布代码声明
ExcepTwo
ExcepOne
。我猜其中一个实际上是
IOException
。您确定出现的错误不是“IOException的无法访问的捕获块”。“?我发布了ExcepOne和ExcepTwo的代码。请现在检查。谢谢。不,我刚刚重新检查了它!上面写着“exception IOException已被捕获”。然后我想你需要发布一个简化版本的
meth2
。我看不出这里可能有什么错误(除了你发布的异常没有实际编译)明白了,兄弟,谢谢。不客气。错误消息让我困惑不解。如果这解决了你的问题,你可能希望接受这里解释的答案:明白了,兄弟,谢谢。不客气。错误消息让我困惑不解。如果这解决了你的问题,你可能希望接受answ呃,这里解释说,