Если вы хотите, чтобы убить процесс, используйте кнопку «Стоп». Иногда бывает полезно остановить приложение. Причина, по которой отладчик не настаивает на убийстве приложения, заключается в том, что программист может захотеть проверить состояние программы в контексте созданного исключения и/или «подтолкнуть» вещи таким образом, чтобы программа могла продолжить работу. Стоит отметить, что ловушка отладчика возникает до запуска финализаторов; это позволяет рассматривать аспекты состояния программы, которые будут уничтожены во время финализации.
Обратите также внимание на то, что возможно исключение, которое вызовет ловушку отладки «неперехваченное исключение» и все же не завершит работу программы. Например, можно было бы сделать что-то вроде:
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
система определяет, прежде чем какие-либо положения Наконец получить вызваны тем исключением, что никто не собирается захватить ApplicationException. Однако, если это исключение вызывает бросок, предложение finally предотвратит исключение этого исключения из исключения, выбросив новое исключение из своего собственного - новое исключение, которое получит.
Этот трюк может быть полезен для отладки в ситуациях, когда некоторые из исключений будут захвачены и обработаны на внутреннем уровне (без нарушения работы пользователя), в то время как другие будут заперты на внешнем уровне (например, вставили сообщение об ошибке). Исключения, которые будут только захвачены на внешнем уровне, будут генерировать ловушку отладчика, когда они произойдут, в то время как те, которые захвачены на внутреннем уровне, позволят программе продолжить работу.
Вопрос в том, почему я не могу этого сделать и прекратить процесс. –