package com.ly.test.fql;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestPrintStackTrace {
private static final Logger LOG = LoggerFactory.getLogger(TestPrintStackTrace.class);
public static void main(String[] args) {
try {
String[] data = new String[] {"aaaa", "bbbb"};
data[3] = "IndexOutOfBounds";
} catch (Exception e) {
LOG.info("==========================");
LOG.info("e.printStackTrace(): info ", e);
LOG.info("==========================");
LOG.info("e.getMessage(): " + e.getMessage());
LOG.info("==========================");
LOG.info("e.getLocalizedMessage(): " + e.getLocalizedMessage());
LOG.info("==========================");
LOG.info("e.toString(): " + e.toString());
LOG.info("===========e.printStackTrace()===============");
e.printStackTrace();
}
}
}
运行
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - ==========================
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - e.printStackTrace(): info
java.lang.ArrayIndexOutOfBoundsException: 3
at com.ly.test.TestPrintStackTrace.main(TestPrintStackTrace.java:11)
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - ==========================
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - e.getMessage(): 3
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - ==========================
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - e.getLocalizedMessage(): 3
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - ==========================
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - e.toString(): java.lang.ArrayIndexOutOfBoundsException: 3
21:20:25.483 [main] INFO com.ly.test.TestPrintStackTrace - ===========e.printStackTrace()===============
java.lang.ArrayIndexOutOfBoundsException: 3
at com.ly.test.TestPrintStackTrace.main(TestPrintStackTrace.java:11)
RunTimeException
正确的方式:
log.xxx("",e)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
e.printStackTrace(ps);
return new String(baos.toByteArray(), StandardCharsets.UTF_8);