java - 如何使用 JNA 处理 Fortran RTL 错误?

标签 java error-handling fortran jna error-code

我正在使用 JNA 运行一个共享库(使用 Intel 编译)。在极少数情况下,Fortran 调用以 forrtl : severe 结束。代码。就像是

forrtl: severe (408): fort: (3): Subscript #1 of the array IWU has value 0 which is less than the lower bound of 1
有没有办法使用 JNA“捕捉”这个运行时错误?

最佳答案

没有将错误代码从 native 代码传递到 JNA 的通用机制。充其量,JNA 会从函数的返回值中知道函数失败。
但是,如果 native 代码提供了读取这些错误代码的方法(例如,Windows GetLastError() 函数,或 Linux 和 macOS 上的全局 errno 变量),则可以检索到更具体的细节。
对于 Intel Fortran“严重”错误,程序执行会停止,除非它在 native 端进行处理,所以我认为您无法在 JNA 中“捕获”它,除非它已经在您的库中“捕获” using... 在这种情况下,您只需要对失败的方法调用做出适当的 react 。可以修改 Fortran 源以捕获一些运行时错误(例如在 I/O 中,动态内存管理或图像控制)并返回此状态。但是,对于这个问题的特定数组边界错误,这可能不适用。

关于java - 如何使用 JNA 处理 Fortran RTL 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62951821/

相关文章:

java - 使用java读取文本文件(.txt)的元数据/属性

c - 尝试在 C 程序中声明 5D 数组时出现段错误

java - 使用 joda time 确定 if 语句持续多长时间(处理)

java - 在java中,如何替换cookie值中的整数值?

vba - 首次运行后对共享文件夹的引用丢失

java - Java处理程序错误

Xamarin Forms - 线程效率

makefile - Fortran 90 中将函数/子例程声明与定义分开的简洁方法

wpf - Fortran 可以与 Windows 上的 Silverlight、WPF 或 MFC 交互吗?

java - 在 Java 中如何判断最终用户是否有声卡?