3
|
Daniel Brückner Pradip · 技术社区 · 15 年前 |
1
2
跳过未处理的异常将终止进程-这可能只是为了阻止您在无意中终止进程。 如果异常是在其他地方处理的(例如在通用的外部try-catch块中),那么您将能够跳过该异常,调试器将把您带到处理该异常的位置。 |
2
1
如果要终止进程,请使用“停止”按钮。有时,停止应用程序肯定很有用。调试器不坚持终止应用程序的原因是程序员可能希望在抛出异常和/或“轻推”事件的上下文中检查程序的状态,以便程序可以继续。值得注意的是,调试器陷阱发生在终结器运行之前;这使得检查程序状态的某些方面成为可能,这些方面将在最终确定过程中被破坏。
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 在异常触发任何Finally子句之前,系统确定没有人将捕获ApplicationException。但是,如果确实抛出了异常,那么Finally子句将通过抛出自己的新异常来防止特定异常逃逸——一个 在某些异常将被捕获并在内部级别处理(而不中断用户体验)而其他异常将被捕获并在外部级别处理(例如,显示错误消息)的情况下,此技巧可能对调试非常有用。仅在外部级别捕获的异常将在发生时生成调试器陷阱,而在内部级别捕获的异常将允许程序继续。 |
3
0
如果异常一直冒泡到“顶部”,而未得到处理,则无法跳过该异常
|
SRobertJames · 使用printf的gdb显示 1 年前 |
Subin · 在vscode中运行c时出错 1 年前 |
Community wiki · 如何调试Python内存故障? 1 年前 |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
Chris Brandon · 如何使节点在堆栈溢出时中断? 2 年前 |