How to get the particular package from the exception stackTrace in java

2k Views Asked by At

I want to print only particular package from the exception stackTrace. How to achieve this?

For example, consider the following stacktrace

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

I want to print only the package "com.myapp.foo" in the stackTrace with linenumber and methodName

1

There are 1 best solutions below

0
On

What about something like this:

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());
  }
}

You can of course add any custom package filtration you need.