2
我有以下檢查我們的包在堆棧跟蹤
StackTraceElement[] stackTrace = e.getStackTrace();
堆棧跟蹤陣列從堆棧跟蹤下面我需要得到mypackage中的第一行。
org.apache.cxf.jaxrs.client.AbstractClient.checkClientException(AbstractClient.java:522)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:544)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:205)
at $Proxy94.run(Unknown Source)
at com.mypackage.service.BankBridgeServiceTest.test(BankBridgeServiceTest.java:507)
com.mypackage.service.BankBridgeServiceTest.test(BankBridgeServiceTest.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
我寫的代碼像
for(StackTraceElement stackTraceElement : stackTrace){
if(!stackTraceElement.isNativeMethod())
{
System.out.println(stackTrace.toString())
break;
}
}
但它無法正常工作。你能幫助我嗎?
蘇尼爾。這會從第一線本身的類名,因爲IsNativeMethod()只檢查行號是否爲-2。但我的包裝線出現在第五行。但它會根據pblm所在的錯誤而改變。 – user3809019
只是大聲思考, 如果你可以循環遍歷棧跟蹤,如果find類匹配你的包結構的一些部分說「com.mypackage」,那麼你可以捕獲它,並打破了看? 我假設大部分時間的初始包結構是com.company。* –