Почему android не удалось поймать java.lang.OutOfMemoryError? [Дубликат]

Короткий ответ: вам нужно выполнить обратный вызов следующим образом:

function callback(response) {
    // Here you can do what ever you want with the response object.
    console.log(response);
}

$.ajax({
    url: "...",
    success: callback
});
0
задан jimpanzer 24 April 2013 в 07:32
поделиться

3 ответа

Вы обнаруживаете общее исключение, в то время как OutOfMemoryError является ошибкой, которая также является Throwable.

Что вы получили

java.lang.Object
   ↳    java.lang.Throwable
       ↳    java.lang.Error
           ↳    java.lang.VirtualMachineError
               ↳    java.lang.OutOfMemoryError

Что вы можете поймать

java.lang.Object
   ↳    java.lang.Throwable
       ↳    java.lang.Exception

Итак, чтобы поймать все возможные Throwables, вам нужно поймать

try {
     //...
} catch (Throwable e) {
    e.printStackTrace();
}
6
ответ дан Yaroslav Mytkalyk 5 September 2018 в 08:07
поделиться

Использовать catch OutOfMemoryError not Exception!

try {
    // your code
} catch (OutOfMemoryError e) {
}
1
ответ дан Crossle Song 5 September 2018 в 08:07
поделиться

Как только программа выходит из памяти, ее может быть сложно восстановить. Вы должны тщательно подумать о том, как пытаться очистить, когда это произойдет. Например, в вашем файле saveImageToExternalStorage он не очищает fOut, если в try / catch возникает исключение. Поэтому вы должны делать такие вещи, как put

OutputStream fOut = null;

вне try / catch, а затем закрывать его в блоке finally try / catch. И обратите внимание на возможность дальнейших исключений в улове блоков finally.

0
ответ дан Stochastically 5 September 2018 в 08:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: