我一直在使用try-catch块来捕获异常,但是当我执行代码时不会恢复。我认为这是抓住异常,处理错误然后恢复的重点。无论如何,我得到它并编写会产生错误的代码。我的意图是抓住所有这些,直到他们不再有错误。例如:
Try
strFileSearch = Directory.GetFiles("C:\", "*.wav", SearchOption.AllDirectories)
Catch ex As UnauthorizedAccessException
MessageBox.Show("Hello World!")
End Try
它捕获异常但从未恢复,因此我无法捕获其他错误。
答案 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;
我希望这会有所帮助。