Android 异步任务捕获块中的休眠

Android 异步任务捕获块中的休眠,android,android-asynctask,Android,Android Asynctask,我目前面临一个问题,即Thread.sleep方法的第一个调用正确执行,但是catch块中的第二个调用没有正确执行。我删除了Thread.sleep调用的try-catch块。为了可读性,没有引发异常。AsyncTask立即进入onPostExecute,第二个Thread.sleep调用未运行 问题出在哪里 private class SomeTask extends AsyncTask<String, Void, String> { @Override prote

我目前面临一个问题,即Thread.sleep方法的第一个调用正确执行,但是catch块中的第二个调用没有正确执行。我删除了Thread.sleep调用的try-catch块。为了可读性,没有引发异常。AsyncTask立即进入onPostExecute,第二个Thread.sleep调用未运行

问题出在哪里

private class SomeTask extends AsyncTask<String, Void, String> {
    @Override
    protected void onPreExecute() {
        System.out.println("PreExecute done.");
    }

    @Override
    protected String doInBackground(final String... urls) {
        Thread.sleep(1000);

        try {
            doSomething();
        } catch (Exception e) {
            Thread.sleep(1000);
        }

        return "something";
    }

    @Override
    protected void onPostExecute(final String result) {
        doSomething();
    }
}
私有类SomeTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
System.out.println(“预执行完成”);
}
@凌驾
受保护字符串doInBackground(最终字符串…URL){
睡眠(1000);
试一试{
doSomething();
}捕获(例外e){
睡眠(1000);
}
返回“某物”;
}
@凌驾
受保护的void onPostExecute(最终字符串结果){
doSomething();
}
}

只有在执行
try
块的过程中引发类的实例(在您的情况下是)时,才会执行
catch
块代码。看起来您可能正在查找
finally
关键字。 下面的代码片段将调用指定的函数,忽略任何引发的异常并使当前线程休眠1000毫秒

 try {
      exceptionsRaisingMethod();
 }
 finally {
      // always sleep
      Thread.sleep(1000);
 }
上面的代码片段实际上是执行以下操作的更好方法:

 try {
      exceptionsRaisingMethod();
 }
 catch (Exception e) {
      // do nothing
 }

 Thread.sleep(1000); // always sleep

您知道,如果出现异常,它将只在
catch
块中运行,对吗?