我在try/catch块中有一条语句,但是异常没有被捕获。有人能解释一下吗?
异常详细信息:System.NullReferenceException:对象引用未设置为对象的示例。
源错误:
Line 139: try
Line 140: {
Line 141: return (int)Session["SelectedLeadID"];
Line 142: }
Line 143: catch (Exception ex)
- Update**这是一个ASP.NET应用程序。在catch块中,引发了一个新异常。您看到的代码就是ASP.NET错误页上显示的代码。
6条答案
按热度按时间332nm8kg1#
该catch块应该捕获异常,但要确保其中没有重新引发。
另一个小评论:我被VS骗了好几次,因为它在调试模式下运行时会遇到类似的异常。尝试简单地按下“继续”或“F5”,看看你的应用程序是否仍然无法工作:)
uxhixvfz2#
我怀疑你需要添加更多的细节--仅仅从你的代码中是无法重现的。特别是(如前所述)我们需要查看
catch
内部,并验证异常实际上是从try
内部抛出的,而不是从其他地方抛出的。其他可能性:
Dispose()
正在被调用(using
等)Exception
,而是其他某个对象ltskdhd13#
如果只是调试器在异常上中断,并且您使用的是VS 2005或更高版本,您可能需要在 *Debug-〉Exceptions... * 下检查是否激活了任何公共语言运行时异常。如果是,调试器将始终首先捕获异常,但允许您继续。
要恢复正常执行,只需从列表中取消选中适当的异常。
jei2mxaa4#
我也遇到过这个问题Image
这是通过删除“抛出此异常类型时中断”的勾号解决的。
警告:当然,我不知道这样做的后果。
bvn4nwqk5#
我也遇到过这样的问题,这让我抓狂了很长一段时间,但最后我终于明白了。这很愚蠢,但也许它能帮助一些人:
它应该看起来像:
因为我在那个函数中有很多
return
语句,所以我没有马上捕捉到这个。此外,我收到的错误消息与我最初预期的不太一样,但现在它是有意义的:
系统操作无效异常:属性"JsonResult. SerializerSettings"必须是类型"Newtonsoft. Json. JsonSerializerSettings"的示例。
aiqt4smr6#
代码看起来非常难看,因为catch()块中有一些东西意味着你将有另一个
return ...
语句,AFAIK,你应该在每个函数的末尾有一个return语句,以使下面的代码更容易。也就是说,您的代码应该如下所示
我想,单出口点应该使代码更容易遵循?无论如何,要获得任何有用的帮助,你必须发布更多的函数。