Rozważmy następujący kodsprawdzone niezaznaczone wyjątkami
private int meth()
{
try
{
return 1;
}
catch(Exception ex)
{
return 2;
}
finally
{
return 3;
}
}
Gdy kod aforeseen jest sporządzany „wyjątek” traktuje się jako niekontrolowany wyjątku. To jest „nieosiągalny blok catch wyjątek nie zostanie zgłoszony w bloku try” Błąd kompilacji nie occur.Consider Jestem deklarując własne wyjątek,
class MyException extends Exception
{
}
i używanie go w kodzie
private int meth()
{
try
{
return 1;
}
catch(MyException me)
{
return 2;
}
finally
{
return 3;
}
}
W ten "nieosiągalny blok catch" wyjątek MyException nigdy nie jest zgłaszany w bloku try "Wystąpił błąd kompilacji. Dlaczego w pierwszym scenariuszu "wyjątek" jest traktowany jako wyjątek RuntimeException, a w drugim scenariuszu, mimo że "MyException" jest podklasą "wyjątku", jest traktowany jako sprawdzany wyjątek. Czy ktoś może mi pomóc w rozwiązaniu tego problemu?
To byłoby moje przypuszczenie - że ponieważ traktuje wyjątki JVM jako wyjątek, który może być rzucony - ale wie, że wyjątek zdefiniowany przez użytkownika nie mogą być wyrzucane, chyba że istnieje „rzucać” zadzwonić gdziekolwiek w próbie. – nlaq