asp.net Try/Catch块未捕获异常

mbyulnm0  于 2023-02-26  发布在  .NET
关注(0)|答案(6)|浏览(205)

我在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错误页上显示的代码。
332nm8kg

332nm8kg1#

该catch块应该捕获异常,但要确保其中没有重新引发。
另一个小评论:我被VS骗了好几次,因为它在调试模式下运行时会遇到类似的异常。尝试简单地按下“继续”或“F5”,看看你的应用程序是否仍然无法工作:)

uxhixvfz

uxhixvfz2#

我怀疑你需要添加更多的细节--仅仅从你的代码中是无法重现的。特别是(如前所述)我们需要查看catch内部,并验证异常实际上是从try内部抛出的,而不是从其他地方抛出的。
其他可能性:

  • 异常处理程序中有不可靠的代码,该代码本身会引发异常
  • 你有一个可疑的Dispose()正在被调用(using等)
  • 您使用的是.NET1.1,抛出的东西(代码未显示)不是Exception,而是其他某个对象
ltskdhd1

ltskdhd13#

如果只是调试器在异常上中断,并且您使用的是VS 2005或更高版本,您可能需要在 *Debug-〉Exceptions... * 下检查是否激活了任何公共语言运行时异常。如果是,调试器将始终首先捕获异常,但允许您继续。
要恢复正常执行,只需从列表中取消选中适当的异常。

jei2mxaa

jei2mxaa4#

我也遇到过这个问题Image
这是通过删除“抛出此异常类型时中断”的勾号解决的。
警告:当然,我不知道这样做的后果。

bvn4nwqk

bvn4nwqk5#

我也遇到过这样的问题,这让我抓狂了很长一段时间,但最后我终于明白了。这很愚蠢,但也许它能帮助一些人:

public IActionResult SomeFunction()
{
    try
    {
        return Json(new ClassWhichTakes2Parameters("FirstParameter"), "SecondParameter"); //comma placed in the wrong spot
    }
    catch (Exception ex)
    {
        //some code
    }
}

它应该看起来像:

public IActionResult SomeFunction()
{
    try
    {
        return Json(new ClassWhichTakes2Parameters("FirstParameter", "SecondParameter"));
    }
    catch (Exception ex)
    {
        //some code
    }
}

因为我在那个函数中有很多return语句,所以我没有马上捕捉到这个。
此外,我收到的错误消息与我最初预期的不太一样,但现在它是有意义的:
系统操作无效异常:属性"JsonResult. SerializerSettings"必须是类型"Newtonsoft. Json. JsonSerializerSettings"的示例。

aiqt4smr

aiqt4smr6#

代码看起来非常难看,因为catch()块中有一些东西意味着你将有另一个return ...语句,AFAIK,你应该在每个函数的末尾有一个return语句,以使下面的代码更容易。
也就是说,您的代码应该如下所示

public int Function()
{
  int leadID = 0;
  try
  {
    int leadID = (int)Session["SelectedLeadID"];
  }
  catch (Exception ex)
  {
    ...
  }
  return leadID
}

我想,单出口点应该使代码更容易遵循?无论如何,要获得任何有用的帮助,你必须发布更多的函数。

相关问题