平时使用e.getMessage()或e.printStackTrace();
第一种报异常时要throw new RuntimeException("异常"),只能得到异常2字.
第二种e.printStackTrace();只是打印,不返回任何数据.
而服务器一般是集群或其他方式部署,查看日志的话太麻烦,可以吧堆栈信息转成String等类型,然后进行保存到数据库、放在页面隐藏域中方便查看.
介绍3种方法供选择:
方法一:
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("-----------------------------------");
}
}
}
}
方法二:
Exception e = new Exception("this is a log");
e.printStackTrace();
方法三:
String fullStackTrace = org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(e)
方法四:
Thread.currentThread().getStackTrace()