SSH 异常 解决 方案 总结
2009-01-07 17:22
357 查看
1.对一个需要提供稳定、高质量的WEB系统而言,
对整个WEB程序的入口、出口的异常处理都需要做封装。
2.Logic、DAO可以根据需要,向上层抛出相应的Exception,
而这些Exception都必须在Action截住,也就是封装起来,向View返回一个合适的信息。
3.发生异常之后,返回到View的信息,可以是给人看得HTML也可以是给JavaScript看的JSON,
所以,普通页面的异常,可以显示错误页面;Ajax发生的异常,可以返回一个包容错误信息的JSON,让Ajax显示出来。
4.很多异常处理是在设计阶段就可以预见的,不要用Spring的AOP拦截,这样会对系统性能操成恶性的影响。
可以做一个BaseAction,把共通的处理写在里面。
5.具体的,抛出、捕获什么样的异常信息,根据系统实际处理内容确定。
根据不同的异常,可以让接收方程序作相应的处理——不局限于错误处理。
能捕获的可控制的异常,就不要让用户知道太多细节。可以改成一些客户能理解的信息。
比如网络连接中断,而不是IOException, 比如服务器忙,而不是SocketTimeOutExceotion等
总之,大部分异常我们都可以预先捕获的。那些我们程序的bug,由于各种原因没有捕获,比如空指针,必须用errorPage进行最后的处理。
不能让用户认为我们系统出了什么大问题了。
1、利用web应用的error-page可以处理
个人感觉这个方式不好,很显然不好统一定制。
2、利用struts的global-exception好像也可以处理
还可以,简单的应用可以试试
3、hibernate是不是对异常进行了封装或者也有自己的处理机制
对你来说没影响,可以不管他,有封装,但是好像没处理机制
3、spring中aop的afterThrowing可以捕获并记录异常
推荐记录,记录后利用异常链继续向上抛runtime非必捕获异常
4、捕获到的异常是不是最原始的异常信息,还是经过封装的?
跟异常链有关,一般java新手写的程序95%断链,开源框架的异常可以追溯到原始的信息
5、aop处理异常对性能影响如何?如果架构中使用了缓存机制,是否会有影响?
异常的捕获确实有性能影响的,个人感觉影响不大,比较异常是偶然发生的。
你指的缓存不明白如何影响异常的捕获
6、是不是需要处理异常,抛出自定义的异常?
当一段代码抛异常的时候,你要看你能不能在catch块内修复程序,让程序继续走不会出问题,否则不建议catch
业务系统比较大的话可以自己模仿开源框架那样定义业务异常,和逻辑异常。方便逻辑判断例如使用instanceof
7、ajax方式,后台异常如何处理?
向上抛,或者在jsp中发现异常,然后throw出来,直到jsb报红叉为止,否则ajax判断的状态码永远是对的。
在有一个地方可以捕获异常,过滤器。
对整个WEB程序的入口、出口的异常处理都需要做封装。
2.Logic、DAO可以根据需要,向上层抛出相应的Exception,
而这些Exception都必须在Action截住,也就是封装起来,向View返回一个合适的信息。
3.发生异常之后,返回到View的信息,可以是给人看得HTML也可以是给JavaScript看的JSON,
所以,普通页面的异常,可以显示错误页面;Ajax发生的异常,可以返回一个包容错误信息的JSON,让Ajax显示出来。
4.很多异常处理是在设计阶段就可以预见的,不要用Spring的AOP拦截,这样会对系统性能操成恶性的影响。
可以做一个BaseAction,把共通的处理写在里面。
5.具体的,抛出、捕获什么样的异常信息,根据系统实际处理内容确定。
根据不同的异常,可以让接收方程序作相应的处理——不局限于错误处理。
能捕获的可控制的异常,就不要让用户知道太多细节。可以改成一些客户能理解的信息。
比如网络连接中断,而不是IOException, 比如服务器忙,而不是SocketTimeOutExceotion等
总之,大部分异常我们都可以预先捕获的。那些我们程序的bug,由于各种原因没有捕获,比如空指针,必须用errorPage进行最后的处理。
不能让用户认为我们系统出了什么大问题了。
1、利用web应用的error-page可以处理
个人感觉这个方式不好,很显然不好统一定制。
2、利用struts的global-exception好像也可以处理
还可以,简单的应用可以试试
3、hibernate是不是对异常进行了封装或者也有自己的处理机制
对你来说没影响,可以不管他,有封装,但是好像没处理机制
3、spring中aop的afterThrowing可以捕获并记录异常
推荐记录,记录后利用异常链继续向上抛runtime非必捕获异常
4、捕获到的异常是不是最原始的异常信息,还是经过封装的?
跟异常链有关,一般java新手写的程序95%断链,开源框架的异常可以追溯到原始的信息
5、aop处理异常对性能影响如何?如果架构中使用了缓存机制,是否会有影响?
异常的捕获确实有性能影响的,个人感觉影响不大,比较异常是偶然发生的。
你指的缓存不明白如何影响异常的捕获
6、是不是需要处理异常,抛出自定义的异常?
当一段代码抛异常的时候,你要看你能不能在catch块内修复程序,让程序继续走不会出问题,否则不建议catch
业务系统比较大的话可以自己模仿开源框架那样定义业务异常,和逻辑异常。方便逻辑判断例如使用instanceof
7、ajax方式,后台异常如何处理?
向上抛,或者在jsp中发现异常,然后throw出来,直到jsb报红叉为止,否则ajax判断的状态码永远是对的。
在有一个地方可以捕获异常,过滤器。
相关文章推荐
- 2015异常问题解决方案经验总结(一)
- 异常问题解决方案经验总结
- 倾力总结40条常见的移动端Web页面问题解决方案
- ASP.NET状态服务及session丢失问题解决方案总结(转)
- ASP.NET 状态服务 及 session丢失问题解决方案总结
- SSH中懒加载异常的解决办法
- ssh常见开发异常解决办法(转)
- 总结SSH阶段常见异常系列之五spring
- ASP.NET 状态服务 及 session丢失问题解决方案总结 (转)
- [Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
- android APP上层问题解决方案总结
- SSH异常解决
- Oracle异常问题解决方案
- Windows下安装xgboost的过程总结及dll问题解决方案
- The 3D Analyst extension has not been enabled.问题解决方案总结
- spring aop编程与ssh集成的奇怪异常问题解决办法
- 解决Eclipse闪退问题的几种方案总结
- Java项目跨域问题解决方案总结
- 转载:Struts2 Error filterStart异常的解决方法总结
- 关于各大浏览器的兼容问题解决方案(总结)