В нижнем кодовом блоке ниже meth2()
throws ExcepOne
и ExcepTwo
, пользовательские исключения, которые расширяются Exception
, поэтому они проверяются. Но когда мне удастся написать еще один блок catch для IOException
, я получаю ошибку компиляции, говоря, что 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);
}
}
Опубликовать код, объявляющий 'ExcepTwo' и' ExcepOne'. Я предполагаю, что один из них на самом деле является «IOException». – Tunaki
Вы уверены, что у вас есть ошибка «Недоступный блок catch для IOException.»? – Tunaki
Я отправил этот код ExcepOne и ExcepTwo. Пожалуйста, проверьте сейчас. Спасибо. – Chandra