Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Try/Catch块未捕获异常_C#_Asp.net_Session_Try Catch - Fatal编程技术网

C# Try/Catch块未捕获异常

C# Try/Catch块未捕获异常,c#,asp.net,session,try-catch,C#,Asp.net,Session,Try Catch,我在try/catch块中有一条语句,但是没有捕获异常。有人能解释一下吗 例外情况详情: System.NullReferenceException:对象 引用未设置为的实例 反对 源错误: Line 139: try Line 140: { Line 141: return (int)Session["SelectedLeadID"]; Line 142: } Lin

我在try/catch块中有一条语句,但是没有捕获异常。有人能解释一下吗

例外情况详情: System.NullReferenceException:对象 引用未设置为的实例 反对

源错误:

Line 139:                try
Line 140:                {
Line 141:                    return (int)Session["SelectedLeadID"];
Line 142:                }
Line 143:                catch (Exception ex)
更新
这是一个ASP.NET应用程序。在catch块中,抛出一个新异常。您看到的代码就是ASP.NET错误页面上显示的代码。

该catch块应该捕获异常,但请确保没有重新抛出


另一个小评论:我已经被VS欺骗了好几次,因为它在调试模式下运行时会出现类似的异常。试着简单地按“continue”或“F5”,看看你的应用程序是否仍能正常工作:)

我想你需要添加更多的细节——这不仅仅是从你的代码中就能复制出来的。特别是(如前所述),我们需要查看
catch
的内部,并验证异常实际上是从
try
内部抛出的,而不是从其他地方抛出的

其他可能性:

  • 在异常处理程序中,存在本身正在引发异常的不可靠代码
  • 您有一个狡猾的
    Dispose()
    正在被调用(
    使用
    等)
  • 在.NET1.1中,抛出的对象(代码中未显示)不是
    异常
    ,而是其他对象

如果只有调试器在异常上中断,并且您使用的是VS2005或更高版本,那么您可能需要在调试->异常下进行检查。。。如果任何公共语言运行时异常被激活。如果是这样,调试器将始终首先捕获异常,但允许您继续


要恢复正常执行,只需从列表中取消选中适当的异常即可。

在我看来,代码非常难看。因为catch()中有某些内容block表示您将有另一个
return…
语句,您应该在每个函数的末尾都有一个单独的return语句,以使下面的代码更简单

i、 也许你的代码应该是这样的

public int Function()
{
  int leadID = 0;
  try
  {
    int leadID = (int)Session["SelectedLeadID"];
  }
  catch (Exception ex)
  {
    ...
  }
  return leadID
}
我想,单出口点应该会让代码更容易理解?无论如何,要获得任何有用的帮助,您必须发布更多的函数。

C#-visualstudio 2019

真实案例解决方案:

使用“System.Exception”而不是Exception。 -->
catch(System.Exception ex)

我遇到了完全相同的问题(没有输入异常)。 这个问题是由“使用Java.Lang 在这个特定的项目中,我们在C#中使用ANDROID SDK


C#-Visual Studio 2019

您还没有显示catch块中的内容-例如,是否有“throw;”语句?显示try/catch块的完整代码是的,目前它只是将异常作为新异常的内部异常进行抛出-稍后将添加日志记录。我意识到这是很久以前的事了,但这不是一个很好的方法,你应该使用Int32.TryParse来处理它可能无法设置int值的问题。不,不幸的是,它会中断。我确实会重新抛出,但我希望应用程序只会进一步分解调用堆栈?请记住以正确的方式重新抛出:)根据标记,这是针对C的。
使用
就是C#。。。我想有些库的名称空间是
Java.Lang
,但是这是一个非常独特的情况,大多数情况下都会假设使用了
System.Exception
。特别是当C#中生成的所有类都有使用系统的第一行
这是一种风格上的东西,在catch块中返回或具有多个返回(甚至可以通过具有多个断点使代码更简单)没有本质上的错误。无论如何,这不是问题的答案(我知道,我已经很晚了),实际上你写这篇文章时有语法错误。您正在try块中重新声明
leadID
。好吧,使用多个return语句比使用明显的语法错误要好得多。(尽管它们中的任何一个都没有错。)