方法调用并且如果存在则始终避免dll未找到错误

时间:2012-09-08 11:17:51

标签: c# .net winforms dll reference

单击“全部保存”按钮时,将调用以下方法。 我想问你有没有办法在下面的代码下跳过错误。

为什么我这样问:有时代码文件夹中不存在pDenemeProxy.dll。 不仅如此,它还是一个Windows窗体应用程序。在引用中有pDenemeProxy.dll。并且只有在mDesTemp不为null时才会初始化pDenemeProxy.dll的fDenemeProxy外观。

谢谢!

 private bool SaveAll()
        {
...
..
..
    if (this.mDesTemp != null)
    {           
         fDenemeProxy dnm = new fDenemeProxy();      
         dnm.SaveThisCustomer(1234,"D",true);
    }
...
..
 return;    
}

错误:System.IO.FileNotFoundException:'pDenemeProxy,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'

注意:.net 2.0和c# 注意:有些人建议使用try catch块,但它没有用。我在VS 2008的调试会话中看到,当mDesTemp为null时,我们再次看到上面声明的错误。

1 个答案:

答案 0 :(得分:0)

在代码的某一行中,如果此错误情况的条件为真(即您尝试访问的文件不是这样),则使用的方法会抛出Exception类型System.IO.FileNotFoundException可能由于某种原因)。

这是您正在经历的预期和正确行为。每当您收到此错误消息时,错误已经发生,现在由您来处理这种新情况。这就是Exception-Handling的全部内容。

要处理由异常引起的错误(非正式地说),你必须捕获之前抛出的异常(正式说)。

要做到这一点,你必须将代码部分(实际抛出异常的方法调用)包含在所谓的try-catch块中,如下所示:

private bool SaveAll()
    {
...
..
..
    if (this.mDesTemp != null)
    {       
         try {

             fDenemeProxy dnm = new fDenemeProxy();      
             dnm.SaveThisCustomer(1234,"D",true);

         } catch (FileNotFoundException e) {

             // deal with the new situation !
         }
    }
...
..
return;    
}

这个含义非常简单直观:

try - 阻止你在'保护'一段能够为它正在这样做的情况下抛出异常的代码。这个try - 块之后是一个任意数量的catch-block - 一个可以被安全代码抛出的每个异常。

如果您正确设置了此try-catch块,那么只要您的(安全)代码抛出异常,您的程序执行流程就不会结束(即您的程序没有崩溃)但它会进入适当的陷阱,在那里你可以做任何事情来处理你刚刚遇到的错误。

此外,如果你在互联网上看,你会发现很多信息,因为异常处理是一个非常重要的编程概念,但我在这里试图解释的是你应该尝试的基本概念先了解 - 它不会变得更加困难;)