Как избежать завершения программы при возникновении исключения в Java

1

Я делаю приложение для поиска BPM в Android. Исходя из ввода исключения нулевого указателя файла и исключения IO. Когда возникает исключение, программа завершается, даже если я окружаю код блоком try/catch. Мое требование состоит в том, что программа не заканчивается и продолжается до других частей.

Мой код:

try {
    mp3file.seekMP3Frame();
    sourcefile = new File("/sdcard/a.mp3");
    mp3file = new MP3File(sourcefile);
    AbstractID3v2 tag = mp3file.getID3v2Tag();
    text=tag.getFrame("TBPM").toString();       
} 
catch (NullPointerException e) {
    System.out.println("null pointer exception");
}
catch (IOException e1) {
    System.out.println("IO exception");
}
........  // other coding 
  • 0
    Вы уверены, что этим кодом исключение? Попробуйте включить разрыв исключений в коде исключений в представлении «Отладка».
  • 0
    Вы уверены, что получите исключение только из этих двух? добавить еще 1 блок catch для общего исключения
Показать ещё 2 комментария
Теги:

2 ответа

-2
Лучший ответ

Используйте finally блок в своем коде, который похож на

 `try{

 } catch{

 } finally{

 }`

наконец, выполнится, даже если ваш блок try вызывает исключение или даже если это не так.

  • 1
    Если между блоком try catch возникает исключение времени выполнения, приложение все равно будет аварийно завершать работу. Единственный способ избежать этого - перехватывать ВСЕ исключения (используя java.lang.Throwable). Очевидно, что это не учитывает ошибки (например, NoClassDefFoundError)
  • 0
    Блок finally будет выполнен, даже если код выдает исключение времени выполнения, но это исключение будет распространено после выполнения блока finally, и приложение может затем завершиться. Это не решает проблему.
Показать ещё 1 комментарий
1
  • Если произошла ошибка между блоком try-catch:

Вы получаете только 2 исключения (NullPointerException и IOException). Любое другое исключение времени выполнения между блоком try-catch все равно может привести к сбою вашей программы. catch java.lang.Throwable, чтобы обеспечить исключение всех исключений.

  • Если ошибка не возникает между блоком try-catch:

Посмотрите в stacktrace для строки в вашем классе, где возникает ошибка, и реализуйте там "правильную" обработку ошибок.

Если ваше приложение выйдет из строя, вы всегда увидите стек в логарифме. Эта команда stacktrace сможет рассказать вам, какая строка кода вызывает сбой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню