平时使用e.getMessage()或e.printStackTrace();数据库
第一种报异常时要throw new RuntimeException("异常"),只能获得异常2字.apache
第二种e.printStackTrace();只是打印,不返回任何数据.服务器
而服务器通常是集群或其余方式部署,查看日志的话太麻烦,能够吧堆栈信息转成String等类型,而后进行保存到数据库、放在页面隐藏域中方便查看.this
介绍3种方法供选择:spa
方法一:日志
package name.xu;public class CallStack { public static void printCallStatck() { Throwable ex = new Throwable(); StackTraceElement[] stackElements = ex.getStackTrace(); if (stackElements != null) { for (int i = 0; i < stackElements.length; i++) { System.out.print(stackElements[i].getClassName()+"/t"); System.out.print(stackElements[i].getFileName()+"/t"); System.out.print(stackElements[i].getLineNumber()+"/t"); System.out.println(stackElements[i].getMethodName()); System.out.println("-----------------------------------"); } } } }
方法二:code
Exception e = new Exception("this is a log"); e.printStackTrace();
方法三:orm
String fullStackTrace = org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(e)
方法四:部署
Thread.currentThread().getStackTrace()
我的推荐,方法一,缘由:简单易用,速度快get