为什么会在我的try-catch中抛出错误?

Geo*_*ton 1 vb.net asp.net exception nullreferenceexception

为什么我的try-catch块在处理时仍会抛出错误?

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例.

              Try
    Here >> :   _MemoryStream.Seek(6 * StartOffset, 0)
                _MemoryStream.Read(_Buffer, 0, 6)
              Catch ex As IOException
                // Handle Error
              End Try
Run Code Online (Sandbox Code Playgroud)

编辑:清除问题以删除无关的信息.

LBu*_*kin 6

应用程序在try-catch块内部爆炸.知道为什么会这样吗?它不应该只是默默地失败吗?

为什么你认为try/catch中不会发生异常?try.catch块的整个目的是定义如何处理异常情况.如果没有与抛出的异常类型相对应的catch块,则异常将传播出去,直到某些代码捕获它或者直到它被提升为未处理.

当然,它可以Catch ex as Exception用作块来捕获所有异常,然后吞下它们,但这很少是一个好主意.

到目前为止NullReferenceException,你几乎从不想抓住它们并处理它们(几乎从不).它们通常表示代码中某处存在错误,其中逻辑null在访问方法或属性之前未测试引用.事实上,_MemoryStream变量很可能本身就是罪魁祸首 - 如果它为null,那么调用它就会引发一个确切的异常.


Jon*_*gel 6

由于try/ catchblock只捕获一个IOException,它不会陷阱NullReferenceException.

这可能表示除了您发布的代码之外的程序中存在某种逻辑错误.对于记录,有了这种异常,程序不应该无声地失败 - 它可能是代码中的错误或库的使用方式(虽然它可能应该由库处理),而不是运行时环境的问题.