`
lveliu
  • 浏览: 1861 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JAVA 后台全局异常控制

阅读更多

一、为什么要进行异常控制

为什么要进行异常控制,在我们开发中,异常是最常见的问题,也是最不愿意看见的问题。但是我们也不得不看见,利用好异常能使我们快速成长,也能让开发人员快速定位异常,设计好了异常控制,能控制到这个异常是由谁产生的,何时产生的,产生的数据是什么,异常的方法是哪个,异常信息是什么等等,当我们利用好这些异常信息和数据,能让我们在开发过程中节约一部分时间和找问题的时间。
二、异常重现

例子1:我们在开发过程中,开发完成,对接也完成了,有一些异常还是会出来,而且这种异常是不定出现,可能这次操作出现异常,下次一样的操作就不会出现异常,这种异常在我们进行对接调试的时候非常麻烦,调试这个异常需要花费很长的时间。
例子2:我们在进行开发的时候,我们在进行对接调试的时候,日志会滚动很快,即使有异常也很难定位到异常信息位置,这样就会导致开发人员在定位异常上面花费时间,重新去点击这个异常出现,进行调试,这样也很花费时间。
例子3:当应用进行上线后,测试很科学,也没有发现任何异常,但是有的异常很奇怪,莫明的出现,这个时候我们就得去翻日志,在最开始的时候日志系统会全盘开着,每天可能就是多少个G的日志,要从中去找异常那犹如就是大海捞针,费神又费力。
有了这个异常控制以后,我们就可以在异常里面快速定位这个异常,异常的参数是什么,异常的异常信息是什么,如果根据异常信息读取找出问题所在方法和行数,如果实在找不出来,直接进行异常参数自我验证,找出异常原因,从而进行异常重现。
三、实现原理

1、整合spring实现异常拦截

         实现spring的接口HandlerExceptionResolver重写resolveException该方法,配置bean为<bean id="exceptionResolver" class="com.xxx.xxx.xxExceptionHandler"/>,r如果采用注解,直接在类xxExceptionHandler注解@Component即可。该方法提供了几个参数,参数为:
(一)HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息
(二)HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。查看HttpServletResponse的API,可以看到这些相关的方法。
(三)Object对象包含了该请求的方法所有信息,通过这个对象提供的方法,可以获取到请求的控制器和方法。
(四)Exception对象包含了该请求的异常信息,通过这个对象可以获取到异常信息。
2、信息提取

在这一步非常的重要,数据提取好了可以直接定位异常,所以下一步说明数据提取。
(一)获取请求链接:
String url = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getServletPath();
(二)获取服务器IP
String serviceIp = request.getLocalAddr();
(三)获取客户端IP
String clientIp = request.getRemoteAddr();
(四)获取请求类型
String httpMethod = request.getScheme();
(五)获取字符集
String charEncoding = request.getCharacterEncoding();
(六)获取请求参数
Map<String, String[]> parameters = request.getParameterMap();
参数可以后期加工,是用JSON呢还是拼接成请求链接呢,都是可以的。
(七)获取异常控制器+方法
前面所提的参数第三点,Object就是请求异常的控制器和方法,可以强转为HandlerMethod获取更多信息,例如获取到只有控制器完整结果,但是获取到的结果和直接Object没得多大区别,都能定位到方法去。
(八)获取异常信息
前面所提参数Exception就是异常信息,直接使用就可以了,这个里面包含了异常完整信息。
3异常重现方式

这些异常存储到数据库,在进行一些手段控制,直接定位该异常是某个开发人员,开发人员解决没有,解决的时间是多久,等等....。
可以做一个后台异常信息管理,查看异常信息,如果异常信息中查看不出来问题,可以直接浏览器模拟发送请求,进行异常重现调试,这样非常快捷,为开发人员节省异常调试时间。可能在前期做这个异常管理期间会消耗一部分时间,总的来说做了这个异常管理,方便快捷舒适。

 

分享到:
评论
1 楼 lveliu 2016-06-27  
啦啦啦啦啦啦啦啦啦

相关推荐

    全局异常捕获,并保存在本地

    在Java中,我们可以使用`Thread.setDefaultUncaughtExceptionHandler`来设置全局异常处理器;在Python中,我们可以利用`sys.excepthook`进行类似的操作;而在JavaScript中,可以监听`window.onerror`事件。 保存...

    java后台登录功能.rar

    - 异常处理机制,如使用@ControllerAdvice和@ExceptionHandler全局捕获和处理异常。 6. **验证码与安全**: - 可能采用了验证码技术防止恶意登录,如图片验证码或短信验证码,增加安全性。 - 密码策略检查,确保...

    android全局异常处理

    在Android应用开发中,全局异常处理是至关重要的一个环节,它确保了应用程序在遇到未预期错误时能够优雅地处理,防止应用突然崩溃,提供良好的用户体验。"android全局异常处理"这个主题关注的就是如何在整个Android...

    Java后台和HTML前端开发代码规范.zip

    本压缩包"Java后台和HTML前端开发代码规范.zip"提供了针对Java后端和HTML前端的开发规范,旨在指导开发者遵循一致的编码风格和最佳实践,从而提高代码可读性、可维护性和团队合作的顺畅度。 首先,我们来探讨Java...

    后台java,后台java.zip

    12. **错误处理**:全局异常处理器,提高用户体验。 13. **持续集成/持续部署(CI/CD)**:可能包含Jenkins、GitLab CI/CD的配置文件。 通过学习和研究“falijava-master”项目,开发者可以深入理解后台Java开发的...

    Android 捕获全局异常处理

    本文将详细讲解如何在Android中实现全局异常捕获,包括在崩溃前显示提示信息、保存错误日志到本地、发送错误报告邮件以及将错误信息上传至后台服务器。 一、创建全局异常监听器 首先,我们需要创建一个能监听整个...

    Java简单的SSH后台管理

    - **异常处理**:全局异常处理机制,确保程序在出现错误时能够给出友好的提示信息。 - **日志记录**:使用Log4j或Logback记录系统运行日志,便于问题排查。 - **单元测试**:使用JUnit进行单元测试,确保代码质量。 ...

    android工程全局异常处理-将未处理异常日志保存在文件中,可后续开发提交至服务器

    本篇主要介绍如何实现一个全局的异常处理机制,以便将未处理的异常日志保存到本地文件,并在后续开发中将这些日志提交至服务器进行分析。 首先,我们需要创建一个`ExceptionHandler`类,这个类将会作为全局的错误...

    java后台管理系统,集成权限管理.zip

    Java后台管理系统是一个基于Java编程语言开发的用于企业管理的软件系统,通常包含用户管理、角色管理、权限控制等功能,旨在提供高效、安全的企业级业务处理能力。这个压缩包"java后台管理系统,集成权限管理.zip"很...

    javaOA后台部分代码

    12. **异常处理**:通过统一的异常处理机制,可以提高系统的健壮性,比如使用@ControllerAdvice注解定义全局异常处理器。 13. **国际化与本地化**:对于多语言支持,项目可能采用了Resource Bundle和Spring的...

    饿了么后台管理系统Java控制台.zip

    13. **异常处理和全局异常拦截**:确保系统在遇到错误时能够优雅地处理,提供友好的错误提示,并进行异常日志记录。 14. **性能优化**:包括数据库查询优化、缓存策略、异步处理等,提高系统响应速度和整体性能。 ...

    java社交项目后台代码.zip

    7. **异常处理**:为了保证系统健壮性,项目通常会有统一的异常处理机制,如全局异常拦截器,用来捕获并处理运行时异常,返回友好的错误信息给用户。 8. **安全控制**:在社交项目中,用户认证和授权是非常关键的。...

    基于SSM框架的医疗后台管理系统.zip

    GlobalExceptionHandler.java: 定义全局异常处理器,处理UserNotFoundException等异常,重定向到登录或错误页面。 页面控制器 PageController.java: 处理页面跳转请求,如登录、学生、医生等页面的跳转。 学生...

    基于springboot+jpa实现java后台api接口,点餐系统.zip

    在本项目中,"基于springboot+jpa实现java后台api接口,点餐系统.zip",开发者采用Spring Boot框架和Java Persistence API(JPA)来构建一个功能完善的点餐系统。这个系统主要涉及到后端API接口的开发,为前端提供...

    Android全局捕获崩溃异常记录日志保存至本地并定时删除

    为了解决这个问题,开发者通常会实现全局异常捕获机制,以便在程序崩溃时记录异常信息,并将这些日志保存到本地。此外,为了维护存储空间的有效利用,日志还需要定时清理。本文将详细介绍如何在Android中实现这一...

    lt_后台java_web_

    5. 错误处理:设置全局异常处理器,统一处理未捕获的异常。 6. 安全性:应用安全性是关键,包括SQL注入防护、XSS防护、CSRF防护等。 7. 日志记录:使用Log4j或Logback进行日志记录,便于调试和问题追踪。 8. 测试:...

    基于微信小程序JAVA后端代码

    1. **SpringBoot与Java后台**: - **依赖管理**:SpringBoot通过 starters 帮助我们自动配置依赖,如数据库连接、缓存、日志等,极大地减少了配置文件的复杂性。 - **自动配置**:SpringBoot的自动配置是基于条件...

    java某在线教育后台管理系统.rar

    11. **异常处理和错误报告**:全局异常处理机制确保系统在遇到错误时能够优雅地处理,避免崩溃。错误日志和错误追踪系统如Sentry有助于快速定位并修复问题。 以上只是部分可能涉及的技术点,实际的在线教育后台管理...

    J2EE项目中统一异常处理源码

    1. 统一异常处理:统一异常处理是指在项目中设置一个全局的异常处理器,当程序抛出异常时,这个处理器捕获异常并进行统一的处理。这样可以避免在每个方法中都写try-catch块,使得代码更加简洁,同时也方便管理和维护...

Global site tag (gtag.js) - Google Analytics