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呃,这里解释说,