BlackBerry-全局异常处理程序

BlackBerry-全局异常处理程序,blackberry,exception-handling,Blackberry,Exception Handling,(编辑:这个问题特别是关于BB的,因为它优化异常的方式很奇怪。我对J2SE中的正常异常处理模式很满意,但BB的行为不符合正常。特别是在这种情况下,BB丢弃错误类型和消息,以及BB开发人员如何处理这个问题,或者他们是否忽略了它。) 我想在我的BB应用程序中实现某种形式的自定义全局错误处理。特别是尝试处理我的代码没有捕获到的任何其他异常,因为我没有预料到它们。默认行为是应用程序失败,并弹出一个对话框,说明发生了未知错误 我想更好地描述这个错误,因此我称之为“全局错误处理程序”。类似于代码: publ

(编辑:这个问题特别是关于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
(在
app.enterEventDispatcher()
调用之后的
main()
方法中)时,它丢失了类型信息。e、 g.我知道代码抛出带有自定义消息的
IllegalArgumentException
,但是在catch块中,它是带有
null
消息的
java.lang.Error

在堆栈跟踪(ALT LGLG)中,消息也丢失了(至少堆栈跟踪是准确的)

所以。。。在BB上实现某种形式的全局错误处理的好模式是什么?或者这在这个平台上被认为是一个坏主意


弹出未知错误对话框是否被认为是一种好的做法?我不喜欢这样,但也许这就是BB的方式?

最佳做法是实现自定义异常处理

因此,如果您希望捕获IllegalArgumentException、MyCustomException和StartupException,请先将它们放入catch块,然后放入异常捕获(如果您愿意,再放入一次性捕获)

共同的规则是——从最排他到最常见,对于同一级别的例外——从最期望到最不期望

在异常==null或getMessage()==null的情况下,您可以始终显示类似“应用程序错误,请将事件日志发送到[支持电子邮件]”的消息,然后如果您的应用程序中有一个很好的事件记录,您就有很好的机会重现问题


关于事件日志,请参阅实现日志的类。

谢谢,这是一个很好的信息。然而,我在寻找一个BB特定的解决方案,以了解其他BB开发人员在这种情况下会做什么。我对这个问题进行了一些编辑,以便更具体地说,我想在整个应用程序上进行某种尝试。捕获块以处理意外异常,如空指针、非法参数等,并以一种对用户友好的方式处理它们。嘿,Richard,我是BugSense的联合创始人。我们专注于移动应用程序的错误跟踪。如果我们能聊一下黑莓平台,那就太好了。欢迎在我们的网站上与我们联系