как бросить исключение в методе onClick (View v) - PullRequest
0 голосов
/ 05 ноября 2018

Сначала я уже рассмотрел некоторые похожие вопросы, но ответы мне не помогли: (

Я пытаюсь запрограммировать приложение для Android, и это моя проблема

public void onClick(View v)  {
        String url = Buscar_Random();
        //do something with the variable url

Я хочу вызвать метод Buscar_Random, этот метод выдает IOException, поэтому мне нужно вызвать это исключение в методе onClick. Итак, я попробовал это:

public void onClick(View v) throws  IOException {

Но onClick - это метод переопределения, поэтому я получаю это сообщение: overridden method does not throw 'java.io.IOException'

Я тоже пробовал это:

    public void onClick(View v)  {
    try {
        String url = Buscar_Random.main();
        //do something with the variable url
    } catch (IOException e){
        e.printStackTrace();
    }

И это самая странная часть, приложение компилируется, но когда я вызываю метод в приложении на моем Android, приложение закрывается (и даже не показывает мне сообщение «К сожалению, бла-бла перестал работать» *

Я тоже пытался использовать RuntimeException, но ни один не работал: (

Что я могу сделать?

Спасибо

1 Ответ

0 голосов
/ 05 ноября 2018

Ваш второй пример делает все правильно.

Что касается сбоя, то, что метод специально не объявляет, что он выдает определенное исключение, не означает, что он не будет. Это может быть выброс NullPointerException, RemoteException, IllegalArgumentException и т. Д. Кроме того, только то, что нет сообщения «Приложение остановлено», не означает, что приложение не аварийно завершилось. Этот диалог не всегда отображается.

Если вы хотите просто игнорировать любые и все ошибки этого метода (возможно, это плохая идея, поскольку текущий сбой, вероятно, является ошибкой, которую вам нужно исправить), просто перехватите Exception:

try {
    //whatever
} catch (Exception e) {}

Тем не менее, вы действительно должны посмотреть на средство просмотра Logcat (нижняя панель инструментов) в Android Studio. Отфильтруйте только по вашему приложению, установите уровень «Ошибка» и выясните причину сбоя приложения.

...