وقتی از کلمه Throw استفاده می کنید کد های بعد اون قابل اجرا نیستند و کامپایلر از اون بلوک کلا به جایی که پرتاب شده میره، یعنی در واقع خطای موقع کامپایل رخ میده که بهش Unreachable Statement میگن.
این حالت برای موقعیت های دیگه ای هم مثل Break Continue Return و ... رخ میده که جملات بعد این کلمات قابل اجرا نیستند.
راهکارشم میتونه استفاده از ترفند های ریز مثل استفاده از یه If باشه.
package mkyong;
class MyException extends Exception {
public MyException() {
}
public MyException(String message) {
super(message);
}
}
public class MainApp {
public static void main(String[] args) {
try {
System.out.println(myMethod(10));
} catch (MyException e) {
System.out.println(e.getMessage());
}
}
private static int myMethod(int i) throws MyException {
switch (i) {
case 1:
System.out.println("One");
return 1;
case 2:
System.out.println("Two");
if (true)
throw new MyException("MyException");
return 1;
case 3:
System.out.println("Three");
default:
System.out.println("Default");
return 6;
}
}
}