单击“全部保存”按钮时,将调用以下方法。 我想问你有没有办法在下面的代码下跳过错误。
为什么我这样问:有时代码文件夹中不存在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时,我们再次看到上面声明的错误。
答案 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块,那么只要您的(安全)代码抛出异常,您的程序执行流程就不会结束(即您的程序没有崩溃)但它会进入适当的陷阱,在那里你可以做任何事情来处理你刚刚遇到的错误。
此外,如果你在互联网上看,你会发现很多信息,因为异常处理是一个非常重要的编程概念,但我在这里试图解释的是你应该尝试的基本概念先了解 - 它不会变得更加困难;)