C# 奇怪的行为-发生错误但异常不是';t投掷

C# 奇怪的行为-发生错误但异常不是';t投掷,c#,C#,以下是我所拥有的: Debug.WriteLine("myMethod ok"); db.myTable.AddObject(new_item); db.SaveChanges(); Debug.WriteLine("myMethod save changes"); 在输出窗口中,我得到: "myMethod ok" 之后就什么都没有了。因此,AddObject和SaveChanges都不存在;t抛出异常,因为如果他们会,我在调试时会得到该异常 原因可能是什么?选中菜单“调试-异常”并标记所

以下是我所拥有的:

Debug.WriteLine("myMethod ok");
db.myTable.AddObject(new_item);
db.SaveChanges();
Debug.WriteLine("myMethod save changes");
在输出窗口中,我得到:

"myMethod ok"
之后就什么都没有了。因此,AddObject和SaveChanges都不存在;t抛出异常,因为如果他们会,我在调试时会得到该异常


原因可能是什么?

选中菜单“调试-异常”并标记所有抛出的复选框。
您可能会收到异常。

选中菜单“调试-异常”并标记所有抛出的复选框。
也许你会收到例外情况。

重新阅读你的问题,我意识到这也可能是一个不同的问题。也许
db.SaveChanges()永远挂起,在函数顶部放置一个断点并逐步执行


调用函数的更高级别的try-catch块可能会捕获异常

您可以通过进入
Debug->Execptions…
下拉菜单并选中
shown
框查看公共语言运行时异常来启用“捕获抛出的异常”,从而了解发生的情况

这将导致代码在异常时中断,即使它位于try-catch块中

如果您没有看到“用户未受伤害”复选框,如下图所示

转到
Debug->Options and Settings…
并确保选中了“仅启用我的代码”框

如果未选中它,它将在.NET framework引发的内部异常上中断,这些异常不代表问题,只不过是通过框架中的异常实现的流逻辑控制(大多数情况下,它是某种类型的TimeoutExecAction)


如果仍然没有捕获到异常,请在未选中“仅我的代码”的情况下重试,只需注意框架可能抛出的“红鲱鱼”异常。

重新阅读您的问题,我意识到这也可能是另一个问题。也许
db.SaveChanges()永远挂起,在函数顶部放置一个断点并逐步执行


调用函数的更高级别的try-catch块可能会捕获异常

您可以通过进入
Debug->Execptions…
下拉菜单并选中
shown
框查看公共语言运行时异常来启用“捕获抛出的异常”,从而了解发生的情况

这将导致代码在异常时中断,即使它位于try-catch块中

如果您没有看到“用户未受伤害”复选框,如下图所示

转到
Debug->Options and Settings…
并确保选中了“仅启用我的代码”框

如果未选中它,它将在.NET framework引发的内部异常上中断,这些异常不代表问题,只不过是通过框架中的异常实现的流逻辑控制(大多数情况下,它是某种类型的TimeoutExecAction)


如果仍然没有捕获到异常,请在未选中“仅我的代码”的情况下重试,只需注意框架可能抛出的“红鲱鱼”异常。

调试时会发生什么,它是否完成执行?代码的其余部分是什么?这是控制台应用程序、windows应用程序还是其他应用程序?如何调试-Visual Studio?如果在第二行
Debug.WriteLine
上放置断点,会发生什么情况?你需要比你提供的更多的信息。我敢打赌,这些方法正在抛出一个调试器无法捕获的异常。奇怪的是,如果您转到Debug->Exceptions,然后选中“Common Language Runtime exception”(公共语言运行时异常)的“抛出”框,VisualStudio应该会在大多数异常上出现异常,这可能会给您一个关于发生了什么的线索。@PaulieWaulie:这也值得禁用“只是我的代码“在调试选项中。@DanPuzey,总是忘记:)调试时会发生什么,它是否完成执行?代码的其余部分是什么?这是控制台应用程序、windows应用程序还是其他应用程序?如何调试-Visual Studio?如果在第二行
Debug.WriteLine
上放置断点,会发生什么情况?你需要比你提供的更多的信息。我敢打赌,这些方法正在抛出一个调试器无法捕获的异常。奇怪的是,如果您转到Debug->Exceptions,然后选中“Common Language Runtime exception”(公共语言运行时异常)的“抛出”框,VisualStudio应该会在大多数异常上出现异常,这可能会给您一个关于发生了什么的线索。@PaulieWaulie:这也值得禁用调试选项中的“仅我的代码”。@DanPuzey,总是忘记:)