【问题标题】:Error handling in wxWidgetswxWidgets 中的错误处理
【发布时间】:2010-02-26 19:36:10
【问题描述】:

有人可以提供有关 wxWidgets 中错误处理的信息或指向文档的指针吗?

具体来说,我发现了这种行为:我尝试从文件创建 wxImage。这是在事件处理程序中。该文件不存在。对图像构造函数的调用不会引发异常。 (我知道没有 wxWidgets 代码会引发异常。)对 image.Ok() 的调用返回 false。美好的。但是在我的事件处理程序退出后,wxWidgets 会无缘无故地弹出一个错误消息对话框。对于这个特定的应用程序来说这没问题,但我想知道如果我想自己处理错误,如何阻止这种情况发生。我怀疑对话框来自事件处理程序,但我搜索 EVT_ERROR 之类的内容,结果为空。

【问题讨论】:

    标签: error-handling wxwidgets


    【解决方案1】:

    有一个类wxLogNull 用于抑制这些日志消息。请参阅http://docs.wxwidgets.org/stable/wx_wxlognull.html#wxlognull,其中还给出了一个示例。

    阅读wxLog overview 了解有关 wxWidgets 如何处理此问题的更多详细信息。

    【讨论】:

    • 谢谢。 (我认为。:-)) 是时候阅读百科全书了。乍一看,它看起来有点令人费解。那好吧。 wxLogNull 示例看起来很简单,但它会丢弃错误消息。如果我从 wxLog 派生一个类,我想重写什么函数? DoLog?
    • 如果不想扔掉,可以使用wxLogStderr输出到stderr。这一切都在 wxLog 概述中进行了解释。 DoLogString 听起来像是你想做的简单事情。
    • 我想要的是尽可能接近失败操作引发异常的模型,其中包含错误代码或消息。但这并不紧急。我会读书和学习。再次感谢。
    【解决方案2】:

    您可以定义自己的日志目标,如果记录了错误消息,则会引发异常。当然,那么您可能无论如何都需要在事件处理程序中捕获它,因为您可能不想只给用户一个相对无用的“无法打开文件”消息,而是“无法打开图像”开”一。如果您这样做,那么为什么不直接测试file.IsOk() 并自己使用wxLogError()? IOW 你可以做你想做的事,但在这种特殊情况下,我真的不明白它比传统的无异常处理方式更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      相关资源
      最近更新 更多