(правка: этот вопрос касается именно BB, из-за странного способа оптимизации исключений. Мне комфортно с обычными шаблонами обработки исключений в J2SE, но BB ведет себя не так, как обычно. В этом случае BB отказываетсятип ошибки и сообщение, а также то, как разработчики BB пытаются решить эту проблему, или если они игнорируют ее.)
Я хотел бы реализовать некоторую форму настраиваемой глобальной обработки ошибок в моем приложении BB.В частности, чтобы попытаться обработать любые другие исключения, которые не были обнаружены моим кодом, потому что я не ожидал их.По умолчанию происходит сбой приложения, и появляется диалоговое окно с сообщением о возникновении неизвестной ошибки.
Я хотел бы описать ошибку немного лучше, отсюда и мой термин «глобальный обработчик ошибок».Нечто похожее на код:
public static void main(String[] args)
{
try
{
FusionApp app = FusionApp.getInstance();
app.enterEventDispatcher();
}
catch (Throwable t)
{
// t has lost all type information at this point - this prints "null"
System.err.println(t.getMessage());
}
}
Моя непосредственная проблема заключается в том, что когда я ловлю t
(в методе main()
после вызова app.enterEventDispatcher()
), он теряет информацию о своем типе.например, я знаю, что код выдает IllegalArgumentException
с пользовательским сообщением - однако в блоке catch это сообщение java.lang.Error
с null
.
И в трассировке стека (ALT LGLG),сообщение также было потеряно (по крайней мере, трассировка стека является точной).
Итак ... что такое хороший шаблон для использования для реализации какой-либо формы глобальной обработки ошибок на BB?Или это считается плохой идеей на этой платформе?
Считается ли хорошей практикой просто всплывать диалоговое окно с неизвестной ошибкой - мне это не нравится, но, возможно, это путь BB?