java printstacktrace_为什么异常. printStackTrace() 被认为是不好的实践?_java_酷徒编程知识库...
你正在觸碰多個問題:1)堆棧跟蹤永遠不應對最終用戶可見(出于用戶體驗和安全目的)
是的,應該可以訪問它來診斷最終用戶的問題,但是,最終用戶不應該看到它們有兩個原因:它們非常模糊和不可讀,應用程序看起來非常不友好,
向最終用戶顯示堆棧跟蹤可能會帶來潛在的安全風險,糾正我,如果我錯了,PHP實際上在堆棧跟蹤中打印函數參數 - 很棒,但是,非常危險 - 如果你在連接數據庫時遇到異常,你有什么不會顯示在堆棧跟蹤中?2)生成堆棧跟蹤是一個相對昂貴的過程(盡管大多數情況下都不可能出現問題),
在創建/拋出異常時產生堆棧跟蹤,打印它不那么昂貴,實際上,你可以在定制異常中重寫Throwable#fillInStackTrace(),使得拋出異常幾乎與簡單的GOTO語句一樣便宜。3)許多日志記錄框架將為您打印堆棧跟蹤(我們不能輕易地更改它),
非常好的問題,這里的主要問題是: 如果框架為您記錄異常,則不執行任何操作(但請確保這樣),如果您想自己記錄異常,請使用Logback或Log4J之類的日志框架,而不要將它們放在原始控制臺上,因為它很難控制 它。
使用日志框架,可以輕松地將堆棧跟蹤重定向到文件,控制臺,甚至將它們發送到指定的E-mail地址,使用硬編碼printStackTrace(),你必須使用sysout 。4)打印堆棧跟蹤不構成錯誤處理,它應該與其他信息日志記錄和異常處理相結合。
再次:正確地記錄SQLException,并顯示好的(使用完整的堆棧跟蹤,使用日志框架): "抱歉,我們目前無法處理你的請求"消息,你真的認為用戶對原因感興趣? 你是否看到StackOverflow錯誤屏幕? 很幽默但不透露任何細節,
但是,他會立即給你打電話,你需要能夠診斷出問題。因此,你需要兩個:正確的異常日志記錄和用戶友好消息。
總是記錄異常(最好使用日志框架 ),但是,不要將它們公開給最終用戶,在GUI中仔細考慮錯誤消息,只在開發模式中顯示堆棧跟蹤。
總結
以上是生活随笔為你收集整理的java printstacktrace_为什么异常. printStackTrace() 被认为是不好的实践?_java_酷徒编程知识库...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: jdbctemplate mysql 分
- 下一篇: python数学建模可视化_数学建模之流
