2014-01-24 19 views
0

我已經創建了一個通用的AsyncTask類中的任何異常,讓我能趕上拋出的所有異常:有當執行<code>task</code>方法通用的AsyncTask處理

public abstract class Poc<ParamType, ReturnType> 
    extends AsyncTask<ParamType, String, ReturnType> { 

    abstract ReturnType task(ParamType... param); 

    @Override 
    protected ReturnType doInBackground(ParamType... param) { 
     try { 
      return task(param); 
     } catch (Exception e) { 
      // Make some Toast display the exception. 
     } 
     return null; 
    } 

} 

我嘗試做一些東西一樣來實現上面的類:

public class Use { 

    public static void runIt() { 
     new Poc<String, Boolean>() { 
      @Override 
      Boolean task(String... param) { 
       return SomeObject.someMethodThatCanThrowAnException(param); 
      } 
     }.execute("Some String"); 
    } 

} 

但是,它一直抱怨我想要添加try/catch語句。即使當我知道task只會從doInBackground調用它包裝它。

我可以以某種方式抑制這種情況嗎?或者什麼是正確的方法,而不必將try/catch添加到Poc子類中的每個類?

+0

您是否看過錯誤? – SLaks

回答

2

由於編譯器試圖告訴你,你需要聲明你的函數能夠使用throws Exception扔東西。

在這種情況下,您希望抽象方法能夠拋出。

+0

我已經嘗試了一些東西,包括在Poc中爲抽象定義添加'throws Exception'。同樣的錯誤,雖然:-( –

+0

**錯誤是什麼說**?任何可以拋出檢查異常的方法必須用'throws'關鍵字來聲明它,這也包括覆蓋 – SLaks

+0

我吮吸,我將它添加到方法定義,而不是聲明。等待定時器打勾,以便我可以接受你的答案。 –