.NET Try / Catch Block。恢复?

时间:2018-04-18 20:37:02

标签: .net try-catch

我一直在使用try-catch块来捕获异常,但是当我执行代码时不会恢复。我认为这是抓住异常,处理错误然后恢复的重点。无论如何,我得到它并编写会产生错误的代码。我的意图是抓住所有这些,直到他们不再有错误。例如:

Try
    strFileSearch = Directory.GetFiles("C:\", "*.wav", SearchOption.AllDirectories)
Catch ex As UnauthorizedAccessException
    MessageBox.Show("Hello World!")
End Try

它捕获异常但从未恢复,因此我无法捕获其他错误。

2 个答案:

答案 0 :(得分:0)

您正在捕获一个独特的异常'UnauthorizedAccessException'。因此,如果您的应用程序抛出UnauthorizedAccessException以外的任何内容(IOException,ArgumentException等),您的应用程序将停止运行。

尝试捕获基类'Exception'

para = para.replace(/(?<!\.com)>/g,'');

如果您尝试捕获多个例外,可以通过 -

进行
+----+----------+--------+
| ID | DATE_KEY | CREDIT |
+----+----------+--------+
|  1 |     8091 |    0.9 |
|  1 |     8092 |     20 |
|  1 |     8095 |   0.22 |
|  1 |     8096 |   0.23 |
|  1 |     8098 |   0.23 |
|  2 |     8095 |     12 |
|  2 |     8096 |     18 |
|  2 |     8097 |      3 |
|  2 |     8098 |   0.25 |
+----+----------+--------+

答案 1 :(得分:0)

你好像误解了例外的意图。

它们不是一般的错误机制,而是更多的特殊情况错误。

因此,例如,不在数据库中的记录可能是一般错误,没有这样的记录,而无法连接到数据库(应该在那里)将是一个例外。

当你使用try catch块时,你会说尝试这个操作,直到它抛出异常,然后捕获异常情况,然后在该块之后继续执行程序的其余部分(除非你重新抛出)

b = 1;

Try
    strFileSearch = Directory.GetFiles("C:\", "*.wav", SearchOption.AllDirectories)
    b = 2;
Catch ex As UnauthorizedAccessException
    MessageBox.Show("Hello World!")
End Try

b = b + 1;

如果您的Directory.GetFiles抛出异常,那么程序结尾处的b将为2.

b = 1
(try block exited early)
b = b + 1;

如果它没有抛出异常,则b为3.

b = 1
b = 2 (inside the try block)
b = b + 1;

我希望这会有所帮助。