我希望通过我的代码捕获一些异常,代码层次结构如下:
try {
// some code 1
runOnUiThread(new Runnable() {
@Override
public void run() {
// some code 2
}
});
// some code 3
runOnUiThread(new Runnable() {
@Override
public void run() {
// some code 4
}
});
} catch (Exception ex) {
}
但是当这样运行时,它不会捕获some code 2
内的some code 4
和runOnUiThread
的任何异常,并且捕获它们的唯一方法是拥有{{阻止try-catch
内部阻止它们:
runOnUiThread
那么, try {
// some code 1
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
// some code 2
} catch (Exception e) {
}
}
});
// some code 3
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
// some code 4
} catch (Exception e) {
}
}
});
} catch (Exception ex) {
}
实际需要吗?或者我做错了什么?如果它已经需要这个,是否有一些方法可以全局实现这一点,而不是每个runOnUiThread
代码块中的try-catch
?
答案 0 :(得分:2)
那么,runOnUiThread实际上需要这个吗?
是的,当您在UI线程上运行时,您运行在不同的处理线程上,这意味着抛出的每个异常都会抛出到您尝试的那个线程的不同线程上。
是否有一些方法可以全局实现这一目标,而不是尝试捕获 在每个runOnUiThread代码块里面?
让自定义类扩展runnable"抛出"自定义/任何异常,但听起来并不舒服。