Si vous voulez arrêter le processus, utilisez le bouton "Stop". Il est parfois utile d'arrêter l'application. La raison pour laquelle le débogueur n'insiste pas sur le fait de tuer l'application est qu'un programmeur peut vouloir examiner l'état du programme dans le contexte de l'exception levée et/ou "pousser" les choses de telle sorte que le programme puisse continuer. Il est intéressant de noter que l'interruption du débogueur se produit avant l'exécution des finaliseurs; Cela permet d'examiner les aspects de l'état du programme qui seraient détruits lors de la finalisation.
Notez également qu'il est possible d'avoir une exception qui déclenchera l'interruption du débogueur "exception non interceptée" et ne terminera pas le programme. Par exemple, on pourrait faire quelque chose comme:
Class exTest
Class myException
Inherits Exception
Sub New(ByVal innerException As Exception)
MyBase.new("Wrapped Exception", innerException)
End Sub
End Class
Shared Function CopyArg1ToArg2AndReturnFalse(Of T)(ByVal arg1 As T, ByRef arg2 As T) As Boolean
arg2 = arg1
Return False
End Function
Shared Sub testIt()
Dim theException As Exception = Nothing
Try
Try
Throw New ApplicationException
Catch ex As Exception When CopyArg1ToArg2AndReturnFalse(ex, theException)
Throw
Finally
If theException IsNot Nothing Then Throw New myException(theException)
End Try
Catch ex As myException
Debug.Print("Exception: " & ex.InnerException.ToString)
End Try
End Sub
End Class
Le système détermine avant tout les clauses finally se déclenchent par l'exception que personne ne va capturer ApplicationException. Comme il arrive, cependant, si une exception est levée, la clause Finally empêchera cette exception particulière de s'échapper en lançant une nouvelle exception, une nouvelle exception qui sera prise en compte par . Cette astuce peut être utile pour le débogage dans des situations où certaines exceptions seront piégées et traitées à un niveau interne (sans perturber l'expérience utilisateur) tandis que d'autres seront piégées à un niveau externe (par exemple en affichant un message d'erreur). Les exceptions qui ne seront piégées qu'au niveau externe généreront un piège de débogueur lorsqu'elles se produisent, tandis que celles qui sont piégées au niveau interne permettront au programme de continuer.
La question est pourquoi je ne peux pas faire ceci et terminer le processus. –