asp.net做的一个系统,现在关于 异常捕获 try catch 并记录 遇到一个问题

系统分为多层 数据访问、交互、业务处理、表现
这里我需要在每一层都加try catch吗?
如果是这样,我遇到了一个问题,那就是,在数据访问层遇到一个异常,然后直接抛出,直至表现层中的controller,controller中catch到的 Exception对象的StackTrace属性中,只有 controller和bll层的异常的位置(行号),没有 交互层和dal层的。这是怎么回事呢,求解~
还有,各位大神可以给出更好 异常捕捉 写异常日志的方法~~求教~

第1个回答  2014-01-16
不需要每个层都加try catch,你可以在你的业务处理层,也就是bll层来做try catch,catch中做写入异常日志操作!
第2个回答  2014-01-16
这是异常和捕获机制,你在Dal层捕获后,并重新抛出了,那么CLR会把他作为一个新的异常,之前的数据会被覆盖掉的.也就是保留最新的一个异常.
你可以在抛出的时候,将旧异常的数据添加到新异常中.追问

怎样将 旧的异常添加 到新的异常中呢。这个是我最想问的。
请指教~

追答

StackTrace用这个类.你具体查一下怎么用

本回答被提问者采纳
第3个回答  2014-01-17
log4net封装全搞定,正常来讲bll层应该捕获异常写日志,不要把异常抛至表现层,表现层只能获取你二次封装的errorcode或者errormsg,交互友好些。
第4个回答  2014-01-16
txt就能搞定,catch到就存到txt中
第5个回答  2014-01-16
业务处理 try catch就可以了。

asp.net try。。。catch 。。。的问题
catch(Exception ex){ \/\/处理异常的代码 } finally { \/\/无论有无异常,都要执行的代码} 其中Exception 是指所有的异常,可也以把他细化,比如:RuntimeException(运行时异常)等 等 ...另外,try 必须和cath连用,try和cath不能提出单独使用 ,而finally则可有可无,...

ASP.NET中使用了Try..Catch,在Try中有异常,但Catch中的代码没有运行,而...
先看看条到Catch里没,如果跳了而代码没有执行,那就是另外的问题了.

ASP.net中使用try,catch的原因
一般来说任何程序都有BUG,软件测试人员也是人,而不是神,他也不可能把所有的BUG都找出来,在编写程序结束的时候,我们用上try catch,不让用户看到错误,由于用户不懂,所以他就认为你的程序是完美的,你看微软,说是更新,其实说白了,也是对系统的修复,修复里面的BUG,这是一种用法。如果你做商...

asp.net三层架构中异常处理在怎么做?我需要在出错的时候把出错信息存起...
页面可以用try catch,然后在Global.asax 中Application_Error事件里做统一处理

前端中 try-catch 捕获不到哪些异常和错误
1.2 异步错误:异步操作如 Promise 的 reject 或 async\/await 的异常,try-catch 可能捕获不到。正确的做法是在异步代码内部或 Promise 上使用 catch() 方法捕获异常。1.3 async-await 异常捕获:在 async\/await 中捕获异常通常通过 try-catch 实现,当 Promise 的 resolve 或 reject 发生异常时,...

asp.net程序异常处理中throw怎么用,抛出后怎么做,举一个简单的例子,说...
catch (Exception){ \/\/ 我们在这个块中编写能够从任何与CLS兼容的异常中恢复的代码 \/\/ 另外,此时通常应将其重新抛出 throw;} catch { \/\/ 我们在这个块中编写能够从任何与CLS兼容或者不兼容的异常中恢复的代码 \/\/ 此时通常应将其重新抛出 throw;} finally { \/\/ 在finally块中我们放入那些对try块...

用ASP.NET开发的一个BS系统运行过程中报"超时时间已到……达到了最大...
问题的原因是与数据库的连接没有显示关闭,而等系统自动回收是要时间的.解决方案:1.在代码里面,把未关闭的连接关闭 2.扩大共享池,方法如下:2.1修改连接池的连接生存期 因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间。如果是ODBC的话 则可以在ODBC Data Source Administrator中手动...

ASP.NET 异常详细信息: System.FormatException: 输入字符串的格式不...
这种情况一般都是你的代码中设计字符串格式转换的时候发生,如果你不知道那一段,那么你可以用楼上的一场捕获来跳过,或者跟踪处理,常见的是a.ToString(),a的值变成了null,你需要debug才能找到具体的问题!解决办法是:在出错的代码上加入以下异常处理语句 try{ } catch(Exception ex){ } ...

asp.net try{}和catch{}都执行了,怎么回事?代码如下:
Response.Redirect() 放在 try{}块中会抛出异常,调用它的重载吧,Response.Redirect(url, false);

何为异常? Try…catch机制的作用
try ...catch可以抓异常并处理异常、抛出异常(调用时再做处理)程序不意外终止,能够使程序正常执行完毕,提高代码的健壮性。一段健壮的代码肯定多出使用try...catch处理,例如计算机让用户输入两个数并且输入运算符,用户输入10\/0,就会初相异常。如果让用户看到异常,用户不明白,只知道出错了,烂系统。

相似回答