我試圖執行某種異常處理jni :: ExceptionDescribe是否隱式清除了JNI環境對象的異常跟蹤?
起初我叫 jni::ExceptionDescribe()
後,我用我剛剛任命爲簡單起見printStackTrace()
和其中
How to obtain a description of a Java exception in C++ when using JNI?
實施完全正常工作 。
我的問題是,我不能像這樣組合使用它們。
一些C++代碼
void aCppMethod() {
jni::ExceptionDescribe(); //Works
printStackTrace(); // No stack trace avaiable because JNI Env does not hold any exception
}
但
void aCppMethod() {
// jni::ExceptionDescribe(); //commented out
printStackTrace(); // Works, where printStackeTrace just prints the Exception into a single log file
}
我的問題是不jni::ExceptionDescribe()
隱含刪除從Java環境中對象的例外,是有一個簡單的可能性,在一個簡單的順序使用這兩種功能。
或者更好。是否有任何鉤子或覆蓋機制來增強或改變行爲jni::ExceptionDescribe()
我需要這兩種行爲的原因是因爲我想使用適當的C++代碼作爲簡單的Windows可執行文件,也可以作爲DLL。
Thx。是的,這個錯誤似乎是一個原因。我正在使用JDK和JRE 1.7,因此它不應該發生。我會進一步調查。 – Diversity
@Filip_Bulovic也許他們關閉了它,因爲沒有必要持有跟蹤比不止一個電話。我建議你刪除你的評論,並將其轉化爲答案。我必須問「ORACLE」這個問題。 – Diversity
無論他們有什麼理由關閉它,都應該在報告中正確記錄。 – EJP