VB.NET中应该使用什么错误处理?
是否应该使用“On Error Goto ErrorHandler ... Exit Sub ErrHandler ... End Sub
”模式,还是应该使用“try { ... } catch { ... } finally { ... }
”模式?
答案 0 :(得分:6)
“尝试{...}抓住{...}终于{...}”模式。
C#
try
{
// Do Something that may go wrong
}
catch (Exception ex)
{
//Do something with the error
}
finally
{
//Cleanup
}
或
VB
Try
// Do Something that may go wrong
Catch ex as Exception
//Do something with the error
Finally
//Cleanup
End Try
答案 1 :(得分:1)
我能想到的最明显的原因是要避开On Error GoTo...
,必须是:
On Error GoTo
不区分类型的例外情况。On Error GoTo
未提供与Try
/ Catch
/ Finally
一样多的结构(例如,在其中嵌套一个Try
/ Catch
块另一个)。On Error GoTo
与Finally
(我知道)无对应。我确信在很多情况下,聪明地使用On Error GoTo
可能会模仿VB.NET Try
/ Catch
/ Finally
功能中内置的行为。但那有什么意义呢?
答案 2 :(得分:0)
On Error Goto ErrorHandler ... Exit Sub ErrHandler ... End Sub
来自VB6天。绝对与Try... Catch... Finally...
答案 3 :(得分:0)
一点背景
'On Error Goto'是在.Net日之前在VB 6中完成工作的方式。 VB编译器仍然允许这样,因此您可以轻松地将旧的VB代码移植到VB.Net。 VB.Net可能是唯一支持此功能的.Net语言。
'Try Catch Finally'是.Net的做事方式,更灵活,允许你捕获,包装和重新抛出异常。它允许在使用不同语言编写的组件之间更容易地进行互操作,并且当您执行更复杂的错误处理时更加可读,因为您没有goto。