try-Catch for runOnUiThread

时间:2015-04-09 15:30:17

标签: android exception try-catch android-runonuithread

我希望通过我的代码捕获一些异常,代码层次结构如下:

    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 4runOnUiThread的任何异常,并且捕获它们的唯一方法是拥有{{阻止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

1 个答案:

答案 0 :(得分:2)

  

那么,runOnUiThread实际上需要这个吗?

是的,当您在UI线程上运行时,您运行在不同的处理线程上,这意味着抛出的每个异常都会抛出到您尝试的那个线程的不同线程上。

  

是否有一些方法可以全局实现这一目标,而不是尝试捕获   在每个runOnUiThread代码块里面?

让自定义类扩展runnable"抛出"自定义/任何异常,但听起来并不舒服。