2010-02-26 62 views
2

有人可以提供有關wxWidgets中的錯誤處理或指向文檔的指針的信息嗎?wxWidgets中的錯誤處理

具體來說,我發現了這種行爲:我嘗試從文件創建一個wxImage。這是在一個事件處理程序中。該文件不存在。對圖像構造函數的調用不會引發異常。 (我明白,沒有wxWidgets代碼會拋出異常。)調用image.Ok()返回false。精細。但是,在我的事件處理程序退出後,wxWidgets無故地彈出一個錯誤消息對話框。對於這個特定的應用程序來說沒關係,但是我想知道如果我自己想要處理錯誤,應該如何阻止這種情況的發生。我懷疑這個對話框是來自一個事件處理程序,但是我搜索諸如EVT_ERROR之類的東西,並且是空的。

回答

3

有類wxLogNull抑制這些日誌消息。參見http://docs.wxwidgets.org/stable/wx_wxlognull.html#wxlognull,其中還給出了一個例子。

閱讀wxLog overview瞭解wxWidgets如何處理這個問題的更多細節。

+0

謝謝。 (我認爲。:-))閱讀百科全書的時間。從一看,它看起來有點複雜。好吧。 wxLogNull示例看起來很簡單,但它會拋出錯誤消息。 如果我從wxLog派生類,我想重寫哪些函數? DoLog? – 2010-02-26 20:52:20

+0

如果你不想扔掉它,你可以使用'wxLogStderr'輸出到'stderr'。這一切都在wxLog概述中進行了解釋。 'DoLogString'聽起來像你想做的簡單事情。 – 2010-02-26 21:54:12

+0

我想要的是儘可能接近失敗的操作引發錯誤代碼或消息的異常的模型。但並不緊急。我會讀書讀書。再次感謝。 – 2010-02-26 22:09:43

0

您可以定義您自己的日誌目標,如果記錄錯誤消息,它將引發異常。當然,那麼你可能需要在你的事件處理程序中捕捉它,因爲你可能不想給用戶一個相對無用的「文件無法打開」的消息,而是一個「圖像不可能打開「一個。如果你這樣做,那麼爲什麼不直接測試file.IsOk()並自己使用wxLogError()? IOW你可以做你想做的事情,但我真的不知道在這種特殊情況下做事比傳統的無例外做法好。