0

当您单击全部保存按钮时,将调用下面的此方法。我想问你有没有办法跳过下面显示的代码下的错误。

为什么我问这个:有时代码文件夹中不存在 pDenemeProxy.dll。此外,它是一个 Windows 窗体应用程序。在参考文献中有 pDenemeProxy.dll。并且 pDenemeProxy.dll 的 fDenemeProxy 外观仅在 mDesTemp 不为空时才被初始化。

谢谢!

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

错误:System.IO.FileNotFoundException:'pDenemeProxy,版本 = 0.0.0.0,文化 = 中性,PublicKeyToken = null'

注意:.net 2.0 和 c# 注意:有些人建议放置 try catch 块,但它不起作用。我在 VS 2008 的调试会话期间看到,当 mDesTemp 为空时,我们再次看到上面声明的错误。

4

1 回答 1

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-block 内,您正在“保护”一段代码,该代码能够在它这样做的情况下引发异常。这个try块之后是任意数量的catch-block - 一个用于安全代码可能抛出的每个异常。

如果你正确设置了这个 try-catch 块,你已经实现了,每当你的(安全的)代码抛出异常时,你的程序的执行流程不会结束(即你的程序不会崩溃),但它会进入适当的 catch -block 你可以做任何事情来处理你刚刚遇到的错误。

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

于 2012-09-08T11:43:43.097 回答