如何在java中从异常stackTrace获取特定包
我只想打印异常stackTrace中的特定包。如何做到这一点如何在java中从异常stackTrace获取特定包,java,exception,stack-trace,Java,Exception,Stack Trace,我只想打印异常stackTrace中的特定包。如何做到这一点 例如,考虑下面的StActTrace com.mongodb.MongoInternalException: DBPort.findOne failed at com.mongodb.DBPort.findOne(DBPort.java:153) at com.mongodb.DBPort.runCommand(DBPort.java:159) at com.mongodb.DBTCPConnector.tes
例如,考虑下面的StActTrace
com.mongodb.MongoInternalException: DBPort.findOne failed
at com.mongodb.DBPort.findOne(DBPort.java:153)
at com.mongodb.DBPort.runCommand(DBPort.java:159)
at com.mongodb.DBTCPConnector.testMaster(DBTCPConnector.java:371)
at com.myapp.foo.MongoConnection.java:10
at com.myapp.foo.MongoConnection.java:27
我只想打印stackTrace中带有行号和方法名的包“com.myapp.foo”这样的东西怎么样:
try {
throw new RuntimeException();
}
catch (RuntimeException e) {
StackTraceElement[] stackTrace = e.getStackTrace();
for (StackTraceElement stackTraceElement : stackTrace) {
String className = stackTraceElement.getClassName();
int pos = className.lastIndexOf('.');
String packageName = className.substring(0, pos);
System.out.println("Package:" + packageName +
", method: "+ stackTraceElement.getMethodName() +
", line:" + stackTraceElement.getLineNumber());
}
}
当然,您可以添加所需的任何自定义包过滤。您是否捕获到异常并只想打印stacktrace的一部分?有关这方面的更多信息适合您的应用程序。异常提供getStackTrace方法。或者您可以编写自己的异常并覆盖printStackTrace方法。你为什么要这样做?是的,我抓住了例外。我也尝试了java.lang.StackTraceeElement,但我不想从exception.getStackTrace()迭代这个数组,我会继续迭代
StackTraceeElement
数组或类似的东西。我使用printStackTrace(PrintStream s)
和过滤流做了类似的事情。没有迭代这个StackTraceElement的其他方法吗?