我对try catch的疑问
一般我对认为容易出错的语句包含进try catch中,
如果我认为很安全的语句,却出现了异常,且未包含进try 语句中,怎么办?
------解决方案--------------------UnhandledException
------解决方案--------------------就是为了发生意外的错误的时候,不捕获错误,这样才能查询问题所在
------解决方案--------------------.Net封装了线程级的未处理异常,也有程序级的未处理异常
Application.ThreadException
AppDomain.CurrentDomain.UnhandledException
web中有Page级和Application_OnError
------解决方案--------------------try catch 影响性能
------解决方案--------------------try catch的意义是为了处理自己能处理的异常,不是容错。
如果脱离开这个本意就属于乱用try...catch。
------解决方案--------------------如果你认为很安全的语句出现了异常,就说明你的程序有某些方面没有考虑周全,或者有很不正常的情况出现。这样的话,你应该允许出现异常,然后分析异常产生的原因,对源代码进行更正,避免下次再出现。
------解决方案--------------------try catch的意义是为了处理自己能处理的异常,不是容错。
如果我认为很安全的语句,却出现了异常,且未包含进try 语句中,表明程式设计本身存在疏漏,不是设计内的错误处理.系统会捕捉异常,甚至可能停止运行程序.除非你可以处理这种异常,如出现未知异常就回滚该步操作,否则还是不放进try中,让QC来测试减少和消除该类异常.
------解决方案--------------------
不是语法容错,是逻辑.即对用户或系统等错误的是否可处理.譬如一个文本框,用户输入不规范,提示输入错误重新输入并清空输入内容,就是对用户输入错误的允许,对try块内的错误也是一样,允许错误,这类错误一般可推测错误类型,作用范围,对系统的影响等,可以做相应的处理.一个程序对可预见错误(哪怕是仅仅推测可能发生)的处理能力就是容错,放在try块外,本身就表明在程序设计之初是不可预见的,程序不该对此进行错误处理,也不知道该怎么处理.