簡體   English   中英

如何從Java中的異常stackTrace獲取特定程序包

[英]How to get the particular package from the exception stackTrace in java

我只想從異常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

我只想在具有行號和methodName的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());
  }
}

您當然可以添加所需的任何自定義包裝過濾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM