Kas*_*hef 3 c# asp.net webforms exception-handling
首先,我已经熟悉了简单的异常处理语法,但我要问的是最佳位置,最佳时间以及处理它们的最佳方法.
我正在构建一个N层应用程序.所以我认为DAL有时会产生一些错误来处理..而我刚刚了解了SqlException类,该类的处理是什么?我曾经看过一个处理SqlException的代码,然后它处理Exception!
在了解了实践以及我将要处理它们之后,我计划创建一个连接数据库并在数据库中记录错误的方法,以便我可以解决它,但我仍然不知道应该提供哪些信息收集让我识别整个情况!
我认为异常处理并不是什么大问题.但我时不时地读到一些奇怪的建议 - 我从未理解 - 在问题评论中但是没有人能回答我,因为这是一些非常古老的问题!
"不要只是明确地捕捉异常"
"应用程序中更高层使用的代码必须始终只抛出异常,而不必担心如何处理它们."
怎么样的Page_Error事件和Application_Error..我看到他们是处理错误的好习惯
异常处理是一个大问题,为此设计一个好的策略并不简单.
首先,一些一般规则:
对于第三点,记录异常并定期分析日志以查找任何奇怪的情况非常重要.那么,让我们从具体的答案开始吧.
想想"处理"异常.当您编写每个代码行时,请考虑可能阻止其完成的可能问题,并考虑可能的纠正措施.如果可能的话.错误消息不是一种好的处理方式,这是最新的策略.
不要开始编写try-catch(Exception),但更喜欢特定的异常.如果你需要将字符串解析为数字等,那么期望FormatException,如果你需要从Object你的类型转换为期望InvalidCastException
不要犹豫,抛出异常!不要像许多人那样做,即.return null或者使用(如ANSI C)布尔返回值和引用参数.有例外.如果您可以处理异常(即您没有找到本地文件但是您知道您有远程备份,那么FileNotFoundException通过调用远程镜像处理,但如果您仍然无法连接然后最终抛出),那么执行此操作尝试恢复计算,但如果你不能然后扔.并且不要忘记抛出内部异常(如果存在),因为它有助于登录最高层.
基本上,即使你没有抓到任何东西,你仍然可以决定自己抛出异常!特别是当功能参数无效时,强烈建议这样做!
另一个不错的选择是仍然登录底层.无论发生异常,您实际上都想记录.
记得给消息一个足够的严重性.如果您通过代码发现您的数据库处于脱机状态,那么这不是意外的异常.仍然将其记录为错误,但在调查日志时不要担心代码错误.相反,如果您捕获到代码无法识别的异常(这NullReferenceException是一个典型示例),则以最高严重性记录,即.致命的,给予它最大的优先权!
肯定可以基于Page.OnError方法.如果您的站点的所有页面都有基页类,那么您绝对应该覆盖该方法.在该方法中,您应该首先记录您的异常.
您也不应该滥用try-catch(异常)块,因为如果您没有捕获异常,则无法使用catch处理,您将不得不通过OnError处理它.
当你运行这样的方法时,不要马上考虑Server.RemoveError().您可能更喜欢为HTTP 500错误(当未处理的异常冒泡到ASP.NET运行时时触发)的静态HTML页面向用户显示礼貌消息.
throw如果发生任何奇怪的事情,请不要犹豫在底层OnError或Application_Error作为单个中心点来处理所有意外异常| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |