Il Try...Catch è (a mio modesto parere), migliore dell'ON ERROR perchè:
- Mettiamo che all'interno del Try hai del codice che può generare un'eccezione e che se la genera manda a monte tutto il resto del Try... non hai problemi, perchè il Try si ferma (mi spiego con un esempio, che è meglio:
codice:
Dim TextBox1 As New TextBox
Dim MiaStringa As String = "PincoPallo"
Try
Dim Prezzo As Integer = CInt(MiaStringa)
TextBox1.Text = CStr(Prezzo + 5)
Catch ex As InvalidCastException
MessageBox.Show(ex.Message)
End Try
In questo caso, se la conversione va a monte, non ho problemi (come mi sembra ce ne siano con ON ERROR, che però non ho mai usato);
- Le eccezioni risalgono lo Stack finchè non trovano un blocco Try...Catch adatto a gestirle. Esempio:
codice:
Private Sub VerificaTry()
Try
GeneraEccezione()
Catch ex As IO.InvalidDataException
MessageBox.Show("InvalidArgumentException")
End Try
End Sub
Private Sub GeneraEccezione()
Try
Throw New IO.IOException
Catch ex As IO.IOException
MessageBox.Show("IoException")
End Try
Try
Throw New IO.InvalidDataException
Catch ex As OverFlowException
MessageBox.Show("OverFlowException")
End Try
End Sub