Как переопределить метод класса в Java и добавить к нему объявление «throws»?

Было бы вообще возможно иметь AsyncTask в Android, который «бросает» вещи? Если я не @Override метода, он не будет вызван. Если я добавлю «броски» в конце, будут ошибки компилятора. Например, я хочу сделать что-то вроде:

class testThrows extends AsyncTask<String,Void,JSONObject> { @Override protected JSONTokener doInBackground(<String>... arguments) throws JSONException { String jsonString = arguments[0]; JSONTokener json = new JSONTokener(jsonString); JSONObject object = json.getJSONObject("test"); return object; } } 

Json.getJSONObject запускает исключение JSON. Есть какой-либо способ сделать это?

Что вам нужно сделать, это обернуть исключение с помощью исключения (исключенного) (как правило, что-то вроде IllegalArgumentException или если ничего не соответствует семантике, RuntimeException ) и указать проверенное исключение как «первопричину» (обычно это аргумент конструктора).

И нет, вы не можете расширить набор проверенных исключений: это было бы против основных принципов OO, подобно тому, как вы не можете снизить видимость (например, от публичного до частного).

Вы не можете переопределить и выбросить больше исключений; Вы можете сохранить подпись только как есть или выбросить меньше исключений.

Вы можете бросить непроверенные исключения; Те не меняют подпись метода.

Ты не сможешь это сделать. Благодаря Time4Tea мне удалось добавить методы обратного вызова к классу, которые вызываются при возникновении ошибки. Например:

 try { JSONTokener json = new JSONTokener(stringToJsonify); JSONObject object = json.getJSONObject("test"); } catch (JSONException e){ onJsonException(); } 

Где onJsonException – метод обратного вызова класса.

Вы не можете переопределять методы таким образом.

В вашем случае решение состоит в том, чтобы добавить блок try-catch и вернуть false. Также вы можете добавить поле String свою задачу и заполнить его описанием ошибки. Затем вы можете использовать его в onPostExecute() .