gpt4 book ai didi

java - jni::ExceptionDescribe 是否隐式清除了 JNI 环境对象的异常跟踪?

转载 作者:行者123 更新时间:2023-11-30 02:38:18 29 4
gpt4 key购买 nike

我试图实现某种异常处理

一开始我打电话 jni::ExceptionDescribe()

之后我使用了

的实现

How to obtain a description of a Java exception in C++ when using JNI?

为了简单起见,我只是将其命名为printStackTrace()并且完全可以正常工作.

我的问题是我不能像这样组合使用它们。

一些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 Environment 对象中隐式删除了异常,是否有可能以简单的顺序使用这两个函数。

或者更好。是否有任何钩子(Hook)或覆盖机制来增强或更改 jni::ExceptionDescribe()

的行为

我需要这两种行为的原因是因为我想使用适当的 C++ 代码作为简单的 Windows 可执行文件和 DLL。

最佳答案

根据 Shen Liang 的说法,The Java Native Interface, Addison Wesley 1999,p. 211:

This function has the side effect of clearing the pending exception.

关于java - jni::ExceptionDescribe 是否隐式清除了 JNI 环境对象的异常跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971068/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com