2010-06-15 3 views
0

Какая обработка ошибок должна использоваться в VB.NET?Какая обработка ошибок должна использоваться в VB.NET

Следует ли использовать шаблон «On Error Goto ErrorHandler ... Exit Sub ErrHandler ... End Sub» или использовать шаблон «try { ... } catch { ... } finally { ... }»?

+1

И если вы даже думаете об использовании «On Error Resume Next», я боюсь, что нам придется вас отпустить. –

ответ

1

Наиболее очевидные причины, я могу думать с верхней частью моей головы, чтобы держаться подальше от On Error GoTo... должны быть:

  1. On Error GoTo не разграничивает типов исключений.
  2. On Error GoTo не обеспечивает столько же структуру, как Try/Catch/Finally (например, один вложенности Try/Catch блок внутри другого).
  3. On Error GoTo не имеет аналогов Finally (что я знаю).

Я уверен, что во многих случаях, грамотное использование On Error GoTo может имитировать поведение, встроенный в функции VB.Net в Try/Catch/Finally. Но в чем смысл?

6

"try {...} catch {...} finally {...}" узор длинным выстрелом.

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, за исключением того, что фигурные скобки не являются частью VB! – Martin

+0

lol! Это очень верно - я был там очень ленив и копировал и вставлял из OP. Я отредактировал свой ответ, чтобы включить оба примера языка. – codingbadger

+0

@barry: зачем выбирать шаблон catch? – CJ7

0

On Error Goto ErrorHandler ... Exit Sub ErrHandler ... End Sub это от VB6 дней. Определенно идти с Try... Catch... Finally...

0

Немного фоне

«On Error Goto» это положение вещей было сделано в VB 6 до дней .Net. Компилятор VB по-прежнему позволяет это, поэтому вы можете легко переносить старый код VB на VB.Net. VB.Net - это, вероятно, единственный язык .Net, который поддерживает это.

«Try Catch finally» - это .Net-способ сделать что-то и сделать более гибким, позволяя вам перехватывать, перематывать и перехватывать исключения. Это позволяет упростить взаимодействие между компонентами, написанными на разных языках, и является более читаемым, когда вы выполняете более сложную обработку ошибок, потому что у вас нет goto.

Смежные вопросы