Incuriosito dal thread di michelecali, dove ho scoperto ON ERROR GOTO/RESUME NEXT, ho fatto una (molto) veloce ricerca su internet dove ho superficialmente capito che:
1 è stato sostituito da TRY/CATCH
2 è stato mantenuto per motivi di compatibilità
3 è meglio usare TRY/CATCH 
A scopo didattico, con il codice di test alla fine del post in cui genero un' eccezione sulla conversione da string a byte, ho cercato di fare le stesse cose usando i due metodi.
Penso che salti subito all' occhio che nella sub TRY_CATCH c' è molto più codice e vengono gestiste nel "particolare" solo le eccezioni della textbox1 mentre nella sub ON_ERROR le eccezioni possono essere gestite nel "particolare" per entrambe le textbox.
Quindi non mi spiego i tre punti sopra...mi stò perdendo qualcosa???
NB: portate pazienza, faccio tutt' altro mestiere che il programmatore, sono abbastanza autodidatta
codice:
Dim a As Byte
Dim b As Byte
Dim f As String
Private Sub TRY_CATCH() Handles Button1.Click
a = 0
b = 0
f = ""
Try
a = CByte(TextBox1.Text)
Catch ex As OverflowException
If MessageBox.Show("errore overflow" & vbCrLf & "continuare?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.No Then
Exit Sub
Else
f = f & "errore: " & ex.Message & vbCrLf
End If
Catch ex As InvalidCastException
If MessageBox.Show("errore testo" & vbCrLf & "continuare?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.No Then
Exit Sub
Else
f = f & "errore: " & ex.Message & vbCrLf
End If
Catch ex As Exception
f = f & "errore: " & ex.Message & vbCrLf
End Try
Try
b = CByte(TextBox2.Text)
Catch ex As Exception
f = f & "errore: " & ex.Message & vbCrLf
End Try
MsgBox("ERRORI" & vbCrLf & f)
End Sub
Private Sub ON_ERROR() Handles Button2.Click
a = 0
b = 0
f = ""
On Error GoTo Errori
a = CByte(TextBox1.Text)
b = CByte(TextBox2.Text)
On Error GoTo 0
MsgBox("ERRORI" & vbCrLf & f)
Exit Sub
Errori:
If Err.Number = 6 Then
If MessageBox.Show("errore overflow" & vbCrLf & "continuare?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.No Then
Exit Sub
End If
End If
If Err.Number = 13 Then
If MessageBox.Show("errore testo" & vbCrLf & "continuare?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.No Then
Exit Sub
End If
End If
f = f & "errore N° " & Err.Number & ": " & Err.Description & vbCrLf
Resume Next
End Sub