【发布时间】:2017-12-13 10:23:22
【问题描述】:
我得到了这个方法:
public void foo(){
int test = 5/0;
}
我这样称呼它:
try {
foo();
} catch (Exception e){
e.printStackTrace();
}
这会捕获ArithmeticException,但我见过我在try-catch 中调用方法的情况,但它没有捕获异常。有没有exception可能抓不到的具体情况?
这是一个澄清问题的例子:
ActivityA 中的 try-catch 块是否捕获了 ActivityB 中的异常?我知道答案是否定的。但我想知道这背后的逻辑。
public class ActivityA extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
startActivity(new Intent(this, ActivityB.class));
} catch (Exception e){
e.printStackTrace();
}
}
}
还有ActivityB:
public class ActivityB extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
int x = 5/0
}
}
对于所有认为这是一个重复问题的酷人,请给我一个 StackOverFlow 上的问题的链接,该问题回答了这个非常明确的问题:try-catch 是否捕获在其内部调用的方法中发生的异常?
【问题讨论】:
-
尝试指定异常,如
IllegalArgumentException。 -
请edit您的问题并解释您看到哪些情况下抛出异常但未捕获。你调用的是什么方法?该方法有什么作用?你确定它会抛出异常吗?你怎么知道的?
-
所以你的问题是关于很久以前的记忆,未指定的情况,没有任何代码可看?不,这不是 StackOverflow 的正确问题。