[英]Advice on error handling using reflection and obfuscation
我在我的方法中使用了一個標准的錯誤處理例程,如下所示:
Try
Cursor.Current = Cursors.WaitCursor
Cursor.Current = Cursors.Default
Catch ex As Exception
MyAssembly.SystemError(MethodBase.GetCurrentMethod().Name, ex.Message, MsgBoxStyle.Exclamation)
End Try
MyAssembly.SystemError
function 將錯誤記錄到文件並顯示一個消息框。
這工作正常,直到我通過混淆運行我的代碼,因為它將方法名稱重命名為一些難以理解的字符(應該這樣做),因此MethodBase.GetCurrentMethod().Name
返回的反映的方法名稱同樣難以理解。
我已經開始將MethodBase.GetCurrentMethod().Name
替換為方法的名稱,但是如果我重命名該方法,我可以(並且確實)忘記更改錯誤處理名稱。
有沒有人有任何好的想法來處理所有這些?
不幸的是,這是混淆的陷阱之一,沒有真正的解決方法(混淆的全部意義在於隱藏和混淆您試圖在此處顯示的信息)。
從可用性的角度來看,您應該盡可能地從有意義的錯誤消息中構建錯誤消息,例如“找不到文件 {0}”。 如果你混淆了你的代碼,那么你絕對不能依賴方法名稱(或其他反映的信息)來構造你的錯誤消息。
順便說一句,以這種方式將方法名稱作為字符串嵌入到您的方法中本質上是撤銷了混淆器的工作。 我的建議是:
最后,無論如何,您正在執行的錯誤處理可能應該在ThreadException事件中完成,但這完全是另一個主題::-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.