【问题标题】:Exception Not Being Handled in Try Catch [duplicate]Try Catch 中未处理异常 [重复]
【发布时间】:2014-05-20 14:21:58
【问题描述】:

我在 Try...Catch 块中遍历一个字节数组。像这样的:

        Try
            For Each curByte In bytes
               'Do something with bytes.    
            Next
            Return encodedBytes
        Catch e As Exception
            'handle exception
        End Try

随机地,我的程序将在上面代码块中的 Next 语句中出现未处理的异常而崩溃。例外是 mscorlib.dll 中的 StackOverflow“无法评估表达式”。

为什么我的异常处理没有处理异常?我不确定我知道从哪里开始尝试解决此错误。

【问题讨论】:

  • 除了有一条评论说你要处理它之外,你是否在异常中做了一些事情? Try catchs 并不是什么神奇的东西,你只要把它们放在里面就可以了,而且一切正常,你仍然需要在异常中做一些事情来确保你的代码不会崩溃。
  • @mituw16:不是真的;空捕获的尝试捕获基本上是旧的“On Error Resume Next” - 它不一定是好的或干净的做法,但它在许多情况下都可以工作。

标签: vb.net exception


【解决方案1】:

无法捕获StackOverflowException,因为它是一个根本性的破坏性错误,.NET 通常无法从中恢复。这就是你没有捕捉到异常的原因。

然而,它的原因通常很容易确定:如果你在异常发生的地方检查你的调试器并查看调用堆栈,你通常会看到一个递归调用(也就是说,同一个方法在一个嵌套时尚)。这就是导致您的异常的原因,您需要修复调用递归调用的任何逻辑来解决问题。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多