首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以在调用System.LoadLibrary时捕获UnsatisfiedLinkError回退到不同的DLL?

是否可以在调用System.LoadLibrary时捕获UnsatisfiedLinkError回退到不同的DLL?
EN

Stack Overflow用户
提问于 2012-02-03 00:11:03
回答 1查看 5K关注 0票数 16

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

代码语言:javascript
复制
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>;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-03 00:29:37

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

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

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9115702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档