gpt4 book ai didi

java - 可以在调用 System.LoadLibrary 时捕获 UnsatisfiedLinkError 以回退到不同的 DLL 吗?

转载 作者:太空狗 更新时间:2023-10-29 22:46:36 24 4
gpt4 key购买 nike

在启动时,我希望我的 Java 程序加载一个 DLL,该 DLL 应该位于 java.library.path 定义的路径上。但是,如果缺少该 DLL,我希望我的程序回退到加载不同的 DLL。如果 System.LoadLibrary 找不到 DLL 文件,它会抛出 UnsatisfiedLinkError。 UnsatisfiedLinkError 是 Error 的子类,而不是 Exception 的子类。许多评论表明捕获错误是不好的做法。在这种情况下可以做这样的事情吗?

try
{
System.loadLibrary("myLibrary");
}
catch (UnsatisfiedLinkError e)
{
try
{
System.load(<a fully qualified path to my fall-back library>);
}
catch (UnsatisfiedLinkError e)
{
<report that even the fall-back library didn't load>;
}
}

最佳答案

在这种情况下,这是完全可以接受的。事实上,这是做您想做的事情的唯一方法。

一般来说,捕获错误是一种不好的做法,因为您无法从错误中恢复,而且之后应用程序可能处于不可预测的状态。例如,OutOfMemoryError 表示内存不足,对此您无能为力。 StackOverflowError 意味着您的调用堆栈已经变得太深,对此您也无能为力。

关于java - 可以在调用 System.LoadLibrary 时捕获 UnsatisfiedLinkError 以回退到不同的 DLL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9115702/

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