我的问题是我不能让内部捕获抛出异常。 在这里,我希望将ex扔到外部捕获。
Runnable(){
public void run(){
try{
try{
}catch(Exception ex){
System.out.println("Inner");
throw ex; //I get an error here
}
}catch(Exception e){
System.out.println("Outer");
}}
错误消息:必须捕获未报告的异常,声明为抛出
答案 0 :(得分:3)
将块放入函数中.....
private void myFunction() throws Exception {
try{
}catch(Exception ex){
System.out.println("Inner");
throw ex; //I get an error here
}
}
然后从代码块中调用它
Runnable(){
public void run(){
try{
myFunction();
}catch(Exception e){
System.out.println("Outer");
}}
答案 1 :(得分:2)
这似乎功能正常。制作嵌套的try-catch块被认为是不好的做法。
public class Test implements Runnable {
public void run() {
try {
try {
throw new IOException("bad"); //throw something here
} catch (Exception ex) {
System.out.println("Inner");
throw ex;
} finally {
}
} catch (Exception e) {
System.out.println("Outer");
}
}
public static void main(String[] args) {
new Test().run();
}
}
// PRINTS:
// Inner
// Outer
答案 2 :(得分:0)
试试这个。
Callable(){
public void call(){
try{
try{
}catch(Exception ex){
System.out.println("Inner");
throw ex; //I get an error here
}
}catch(Exception e){
System.out.println("Outer");
}}