我在try / catch块中有一个语句,但异常没有被捕获。谁能解释一下?
异常详细信息: System.NullReferenceException:Object 引用未设置为的实例 对象
来源错误:
Line 139: try
Line 140: {
Line 141: return (int)Session["SelectedLeadID"];
Line 142: }
Line 143: catch (Exception ex)
更新 这是一个ASP.NET应用程序。在catch块中,抛出一个新异常。您看到的代码是ASP.NET错误页面上显示的内容。
答案 0 :(得分:6)
该拦截块应该捕获异常,但要确保没有重新投掷。
另一个小评论:我被VS欺骗了很多次,导致它在调试模式下运行时出现异常。尝试简单地按“继续”或“F5”,看看你的应用程序是否仍无效:)
答案 1 :(得分:5)
我怀疑您需要添加更多详细信息 - 这些信息无法从您的代码中重现。特别是(如前所述)我们需要查看catch
内部,并验证异常实际上是从{em>内部 try
而不是其他地方抛出的。
其他可能性:
Dispose()
被调用(using
等)Exception
,而是其他一些对象答案 2 :(得分:2)
如果只有调试器中断异常并且您使用的是VS2005或更高版本,则可能需要在 Debug-> Exceptions ... 下查看是否有任何公共语言 - 运行时 - 例外已激活。如果是这样,调试器将始终首先捕获异常,但您可以继续。
要恢复正常执行,只需从列表中取消选中适当的例外情况。
答案 3 :(得分:-1)
代码看起来非常丑陋的IMO。因为catch()块中有一些东西意味着你将有另一个return ...
语句,AFAIK你应该在每个函数的末尾都有一个return语句,以便使下面的代码更容易。
即。也许你的代码看起来像
public int Function()
{
int leadID = 0;
try
{
int leadID = (int)Session["SelectedLeadID"];
}
catch (Exception ex)
{
...
}
return leadID
}
我认为单个退出点可以让代码更容易理解?无论如何,要获得任何有用的帮助,你必须发布更多的功能。
答案 4 :(得分:-4)
使用“System.Exception”而不是Exception。
catch (System.Exception ex)
我有一个“使用Java.Lang;”
引起的完全相同的问题