刚刚工作不久,有一些问题,希望前辈给予解答。
一个系统中有没有一个有关程序异常的处理方案呢?
我觉得一个系统中异常最终是被捕获和处理的,处理不了也要记录日志,是肯定不会显示到页面的。
但是异常具体要怎么处理呢?
我想找到一个异常捕获、处理、记录日志的方案,怎么样才能在看日志时候准确的定位到出错的方法,位置,并且可以知道出错的原因,如果做好了我想日志就是我们的调试记录器。
不知道大家有没有好的想法,本人才疏学浅,请以三层架构的系统举例谢谢。
很好的想法,帮顶了!
记录日志时把异常的 stacktrace 也记下来,就可以定位到出错的方法,位置。出错的原因需要结合message 和 stacktrace 具体分析了。
我也写了2篇关于这方面的文章你可以看下
[EntLib]微软企业库5.0 学习之路——第三步、为项目加上异常处理(采用自定义扩展方式记录到数据库中)
使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)
如果仅仅是异常记录的话,看第2篇log4net的就可以了.
推荐log4net,或者自己实现,如你系统中的日志管理子功能,不过这还属于功能屋,特殊的异常需要底层捕获。
异常设计是属性接口设计的!
你在多层应用时,下层给出的接口说明应该带有此方法可能会产生的所有异常。
具体在哪里面处理,这得看你的业务逻辑了。例如:
DAL接口中标注出一个接口可能会抛出SQLException,
BLL中使用DAL该接口的方法,可能会处理掉SQLException,而抛出新的异常,如:BusinessException(),或者FriendlyMessageException("用户名不为空")
表示层看到BLL接口中注明抛出FriendlyMessageException时,可以直接把里面的消息显示给用户,而BusinessException可以不处理。
在最后的Application的异常处理中,你可以把异常的所有信息都记录下来以备查(按需选择何种存储方案)。