02. 将异常堆栈信息,返回给前台,便于排查问题.

需求

    1. 我们在排查线上可复现问题时,如果出现异常可能还需要登陆服务器去翻日志.

解决:

    1. java Code

      1. @RequestMapping("UserController/register")
      2. @ResponseBody
      3. public Map<Object, Object> register(String email, String userName, String password) {
      4. HashMap<Object, Object> result = MethodReturn.returnMapDefault();
      5. try {
      6. // result = userService.register(email, userName, password);
      7. int a = 1 / 0;
      8. } catch (Exception e) {
      9. e.printStackTrace();
      10. /*********************************未便于展示,暂为封装******************************************/
      11. Map<Object, String> exceptionStatckTrace = new LinkedHashMap<>();
      12. exceptionStatckTrace.put(0, e.getClass().getName() + ": " + e.getMessage());
      13. StackTraceElement[] stackTrace = e.getStackTrace();
      14. int length = stackTrace.length;
      15. StackTraceElement obj = null;
      16. StringBuilder fileName = null;
      17. for (int i = 0; i < length; i++) {
      18. obj = stackTrace[i];
      19. fileName = new StringBuilder();
      20. if (obj.getFileName() != null) {
      21. fileName.append(obj.getFileName());
      22. if (obj.getLineNumber() != -1) {
      23. fileName.append(": " + obj.getLineNumber());
      24. }
      25. } else {
      26. fileName.append("Unknown Source");
      27. }
      28. exceptionStatckTrace.put(i + 1, obj.getClassName() + "." + obj.getMethodName() + "(" + fileName.toString() + ")");
      29. }
      30. /***************************************************************************/
      31. result.put("exception", exceptionStatckTrace);
      32. } finally {
      33. return result;
      34. }
      35. }
    2. 效果

2017年8月13日 15:19:18

null

时间: 2024-11-09 23:38:54

02. 将异常堆栈信息,返回给前台,便于排查问题.的相关文章

日志如何打印异常堆栈信息。

package com.doctor.slf4j; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 如何打印异常堆栈信息. * @author doctor * * @time 2014年12月11日 上午9:49:00 */ public class LogThrowableRule { private final Logger log = LoggerFactory.g

slf4j如何打印java异常堆栈信息throwable对象

SLF4J 1.6.0 以前的版本,如果打印异常堆栈信息,必须用 log.error(String msg, Throwable t) log.info等对应方法. 如果msg含有变量,一般用String.format方法格式化msg. 如果用 error(String format, Object... arguments) 等其它方法,异常堆栈信息会丢失. 幸好,SLF4J 1.6.0以后的版本对这个不友好的异常信息log 改进了. error(String format, Object..

Java异常堆栈信息转String

平时使用e.getMessage()或e.printStackTrace(); 第一种报异常时要throw new RuntimeException("异常"),只能得到异常2字. 第二种e.printStackTrace();只是打印,不返回任何数据. 而服务器一般是集群或其他方式部署,查看日志的话太麻烦,可以吧堆栈信息转成String等类型,然后进行保存到数据库.放在页面隐藏域中方便查看. 介绍3种方法供选择: 方法一: package name.xu;public class C

异常堆栈信息输出工具类

public class MyExceptionUtils { /** * 输入异常的堆栈信息 * @param aThrowable * @return */ public static String getStackTrace(Throwable e) { final Writer result = new StringWriter(); final PrintWriter printWriter = new PrintWriter(result); e.printStackTrace(pr

SpringBoot-技术专区-详细打印启动时异常堆栈信息

SpringBoot在项目启动时如果遇到异常并不能友好的打印出具体的堆栈错误信息,我们只能查看到简单的错误消息,以致于并不能及时解决发生的问题,针对这个问题SpringBoot提供了故障分析仪的概念(failure-analyzer),内部根据不同类型的异常提供了一些实现,我们如果想自定义该怎么去做? FailureAnalyzer SpringBoot提供了启动异常分析接口FailureAnalyzer,该接口位于org.springframework.boot.diagnosticspack

Java获取异常堆栈信息

public String getExceptionStack(Exception e){ StackTraceElement[] stackTraceElements = e.getStackTrace(); String prefix = "Exception in thread "+"\""+Thread.currentThread().getName()+"\" "; String result = prefix+e.

将异常堆栈信息转换成字符串

package cn.com.aia.grouplife.utils; import org.apache.commons.lang3.StringUtils; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; public class ExceptionMsgUtils { /** * getExceptionInfo * @param e * @return result限

springmvc mybatis 声明式事务管理回滚失效,(checked回滚)捕捉异常,传输错误信息

一.知识点及问题 后端框架: Spring .Spring mvc .mybatis 业务需求: client先从服务端获取用户大量信息到client,编辑完毕之后统一Post至服务端,对于数据的改动要么全成功,要么全失败,所以须要使用事务支持. 问题: 配置Spring声明式事务,运行中出现异常未回滚.从网上查询得到一開始是自己的配置出了问题,因为配置文件的载入顺序决定了容器的载入顺序导致Spring事务没有起作用. 详情例如以下: 因为採用的是SpringMVC. MyBatis,故统一採用

JAVA将异常的堆栈信息转成String

有时候我们需要将系统出现异常的堆栈信息显示到异常页面的一个隐藏的DIV内,这样查看源时就可以快速的定位到异常信息.这个时候就要将异常信息转成String. /* * 将异常的堆栈信息转成String */ public static String getExceptionStack(Throwable throwable) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); throwable