【问题标题】:Best way to transfer exceptions to UI?将异常传输到 UI 的最佳方式?
【发布时间】:2012-01-27 05:06:39
【问题描述】:

如果我需要将异常传输到 UI,有什么更好的方法来处理它们。 我需要使用什么:通过几种方法向 UI 抛出 Checked/Unchecked(哪个更好),以向用户显示适当的消息或从方法到方法返回错误代码到 UI 或其他方法?

更新:

使用 Android 的 Handler 来处理我不知道如何处理它们出现的所有选中/未选中(可能只是其中一个)异常是否是个好主意?

例如

...

catch(NUllPointerException){
UIExceptionHandler.sendEmptyMessage(...);
}

...

onHandleMessage(...){
//handle exception here - for example show toast 
}

?

【问题讨论】:

  • 这取决于你的用户界面。
  • 向 USER 显示消息,例如“连接不存在”

标签: java android


【解决方案1】:

就像 Dan W 所说,您可以创建自己的异常并将其捕获到您的 UI 层。扩展 RunetimeException 允许您抛出异常,而无需在方法头中指定它们。

另一个需要考虑的重要事项是 UI 层上的 EDT。由于不可能将所有事件调度程序线程异常包装在 UI 层中的单个位置,因此您可以创建一个 UncaughtExceptionHandler 并从那里管理在您的应用程序中触发的所有 UncaughtExceptions。

从那里您可以轻松地记录并通知用户发生的错误,并根据引发和未捕获的异常类型显示不同的消息。这样,您就可以确定没有任何错误会被忽视。

本讨论涵盖了实现 Handler 的基础知识。 How can i catch Event Dispatch Thread (EDT) exceptions?

【讨论】:

    【解决方案2】:

    我会亲自创建一个自定义异常并将其一直抛出到 UI 层。这样,您就不会抛出所有异常。您可以在项目的较低层捕获所有其他异常,但是当您处于需要恢复到 UI 的那些区域时,您会捕获原始异常并重新抛出您的自定义异常。

    【讨论】:

    • 有什么更好的方法:从 Exception 或 RuntimeException 扩展自定义异常?
    【解决方案3】:

    这就是我在当前项目中所做的。 如果出现异常,我会捕获它们并存储有意义的文本,例如 - UserInput 太短或数字不允许等,我将它们存储在一个名为 ErrorVO 的数组中。然后我在 UI 上显示错误消息。

    【讨论】:

    • 如何通知 UI 出现错误并从数组中获取适当的值?
    • 您将它们作为 JSON 对象发送,或者在我当前的应用程序中,我使用速度并将错误对象作为字符串列表发送回并迭代文本。
    猜你喜欢
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多