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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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










以上是关于02. 将异常堆栈信息,返回给前台,便于排查问题.的主要内容,如果未能解决你的问题,请参考以下文章

@ExceptionHandler 没有被触发?

JAVA开发异常排查命令集合

Jvm内存排查

EasyNVR日志中堆栈信息打印为字节代码排查及优化

线程池的堆栈问题

Node.js异常处理