在启动时,我希望我的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>;
}
}
发布于 2012-02-03 00:29:37
在这种情况下,这是完全可以接受的。事实上,这是做你想做的事情的唯一方法。
一般来说,捕获错误是一种糟糕的做法,因为您无法从错误中恢复,而且之后应用程序可能会处于不可预测的状态。例如,OutOfMemoryError
意味着你已经耗尽了内存,你对此无能为力。StackOverflowError
意味着你的调用堆栈已经变得太深了,你对此也无能为力。
https://stackoverflow.com/questions/9115702
复制相似问题