哪位帮忙详细解释一下异常处理时,写日志使用
java api Exception中的getStackTrace()方法和org.apache.commons.lang.exception.ExceptionUtils.getStackTrace(e) 
两者有什么区别,对程序有什么影响?

解决方案 »

  1.   

    没有区别。org.apache.commons.lang.exception.ExceptionUtils 这个类只不过是apache 封装过的。
      

  2.   

    为什么看到有人推荐使用apache封装过的呢?打印日志效率,或者异常获取有区别么?
      

  3.   

    正常情况下公司不会让你那么简单的就getStackTrace的
      

  4.   

    看了源码你就清楚了:
    org.apache.commons.lang.exception.ExceptionUtils.getStackTrace(e):public static String getStackTrace(Throwable throwable) {
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw, true);
            throwable.printStackTrace(pw);
            return sw.getBuffer().toString();
        }
    getStackTrace():public class Exception extends Throwable 
    Throwable的代码就不贴了,你自己看下呗。
      

  5.   

    楼主看下返回值,就知道为什么了。e.getStackTrace() 返回一个 StackTraceElement[]ExceptionUtils.getStackTrace(e) 返回一个 String如果是打印日志,是不是直接输出一个String好呢?