2015-11-02 62 views
0

管理例外,我有這樣的代碼:中的AsyncTask

public void remote(final Backup backup) { 
     local(backup); 
     AsyncTask.execute(new Runnable() { 
      @Override 
      public void run() { 
       BackupSendInfo sendInfo = new BackupSendInfo() 
         .setFile(getLastBackup()) // <--- 
         .setFileName(getBackupName(backup)) 
         .setBackup(backup) 
         .setDeviceId(device) 
         .setApp(config.getAppName()); 
       fileSender.send(sendInfo); 
      } 
     }); 
    } 

這是getLastBackup方法簽名:

private File getLastBackup() throws BackupException; 

正如你所看到的,它拋出BackupException,但我不能添加throws BackuPException delcaration在remote方法簽名中,因爲它在另一個線程中。

我該如何處理這種情況? 我想要remote方法拋出BackupException

+0

在asynctask方法中捕獲異常並拋出它。 –

+0

我不能。如果我在AsyncTask的catch中重新拋出它,我會得到相同的錯誤:必須捕獲異常。 –

+0

這可以幫助你:http://stackoverflow.com/a/6312491/4596556 –

回答

0

我得到了解決方案。也許,這不是最好的。

我在外面看到lastBackup AsyncTask,這樣我可以聲明throws BackupException

public void remote(final Backup backup) throws BackupException { 
     local(backup); 
     final File lastBackup = getLastBackup(); 
     AsyncTask.execute(new Runnable() { 
      @Override 
      public void run() { 
       BackupSendInfo sendInfo = new BackupSendInfo() 
         .setFile(lastBackup) 
         .setFileName(getBackupName(backup)) 
         .setBackup(backup) 
         .setDeviceId("Desconocido") //TODO leer dispositivo del fichero deviceName 
         .setApp(config.getAppName()); 
       fileSender.send(sendInfo); 
      } 
     }); 
    }