请问在真实企业WEB项目中,一般如何处理异常的。

本人正在做毕业设计,是一个WEB系统(有点老土,勿喷 :oops: )。自己对异常处理还有日志记录这一块不太懂。

想了解下在真实的企业WEB项目中是如何处理异常,并输出日志的。

我现在是这样来处理的,定义了一个可嵌套的业务层 checked 异常 BusinessInterruptException extends Exception,再定义了一个 可嵌套的底层 unchecked 异常 DataAccessException extends RuntimeException。
在业务层出现异常的话都 throw 出 BusinessInterruptException 并写入异常原因。在 Dao 层出现 SQLException的话 catch 后再 throw 出 DataAccessException并记录日志。

使用的是 Log4J 记录日志

不知道自己这样处理是否合理,想请问各位在真实项目中一般都是如何处理的。

和前面仁兄说的差不多。

为了方便查找异常可以给你建议。也是我目前项目的异常机制。

所有错误都向上抛,比如前面仁兄说的action里 才去处理。不过此处说的处理是写日志。
至于程序的错误处理,看你怎么设计的逻辑了。

日志就2个地方写,一个是刚才说的,可以说是入口了。还有就是对DB操作类的增,删,改。查。的所有最终执行的方法。

LOG的写法有很多。比如DAO的异常加SQL一起写LOG,业务层的加参数,返回值,接口名字等能直观快速提供查找的信息一起写LOG,当然,都别忘记打异常堆栈信息。和当时异常的时间

日志最好是SubfferString 全部添加好,在一次中写入LOG,因为够大的话,线程太多。不然会乱的。

LOG4J 可以的。没什么不太不好。

希望有参考价值!

一般发生了不可恢复的错误就写入日志,并且跳转到错误页面告知用户,挂了

在dao层和service层是不捕获异常处理的,一般都是在action捕获并处理,并提示前台显示,写入日志等。
你也可以多定义一些异常种类,例如
BaseApplicationException extends Exception implements Serializable
ServiceLocatorException extends BaseApplicationException
这样方便查找