C# 名称'$例外情况';在当前上下文中不存在
今天我在工作中调试一个应用程序。我继续在一个catch块中设置断点,以便更详细地检查异常C# 名称'$例外情况';在当前上下文中不存在,c#,.net,debugging,exception,visual-studio-2012,C#,.net,Debugging,Exception,Visual Studio 2012,今天我在工作中调试一个应用程序。我继续在一个catch块中设置断点,以便更详细地检查异常 查看详细信息模式窗口正常打开,但它没有向我显示异常的详细信息,而是抛出了一个奇怪的错误,我从未得到过,也不知道它的含义: 错误显示: 当前上下文中不存在名称“$exception” 这是因为我在catch块范围内,所以我应该能够看到我的异常 重新启动应用程序后,我成功地调试了它。这是我(到目前为止)唯一一次犯这个错误 有人知道它的意思吗?我如何修复它(而不必重新启动应用程序) 注意:我正在使用Visual
查看详细信息
模式窗口正常打开,但它没有向我显示异常的详细信息,而是抛出了一个奇怪的错误,我从未得到过,也不知道它的含义:
错误显示:
当前上下文中不存在名称“$exception”
这是因为我在catch块范围内,所以我应该能够看到我的异常
重新启动应用程序后,我成功地调试了它。这是我(到目前为止)唯一一次犯这个错误
有人知道它的意思吗?我如何修复它(而不必重新启动应用程序)
注意:我正在使用Visual Studio 2012 Premium。版本11.0.61030.00更新4查看MSDN的库: 根据他们的说法,如果您在没有发生异常的情况下尝试计算异常对象,您将得到一个异常。但是,因为你在捕鲸区,一个例外发生了。。。如果看不到您的代码,很难猜测,但是是否可能有多个线程正在运行,并且异常在被另一个线程处理之前被一个线程使用?没有什么意义,但值得一看。 一个安全的(r)选项是确保在尝试从日志中获取详细信息之前,检查日志中的异常是否为null。
还值得一看:HttpRequestException包含一个内部异常,它可能是空引用的来源?只是猜测而已。我同意特拉普苏季斯的观点,可能也不例外。要抑制此错误,请按Ctrl+Alt+E,展开托管调试助手,然后取消选中LoadFromContext。当我看到此错误时,调试器中也出现了“无法计算表达式”错误。这让我想到了Rick Strahl的这篇文章,他说这是Visual Studio 2013原始版本中的一个bug
当我检查我所在的机器时,它实际上有VS2013,没有安装任何更新。安装更新修复了这个问题。尝试明确地告诉编译器如何导入dll。例:
using System;
using System.Runtime.InteropServices;
namespace BitmapProcessingCs
{
public static class NativeMethods
{
[DllImport("BitmapProcessingCpp.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void GenerateBitmap(IntPtr src, int dimension);
}
}
我在以下步骤中解决了相同的问题:
<强>步骤1)如果使用VisualStudio在C++中编程自定义DLL,则在项目的属性页中设置
步骤2)要在
.h
文件中执行减速功能,请使用\uuu declspec(dllexport)
关键字,如下所示:
__declspec(dllexport) double Sub(int a,int b);
[DllImport("custom.dll", EntryPoint = "?Sub@@Y234NN@Z", CallingConvention = CallingConvention.Cdecl)]
public static extern double Sub(int a,int b);
步骤3)构建并导出DLL文件,然后使用依赖项Walker软件获取函数入口点。
step4)在C#项目中导入DLL文件,并设置入口点和调用约定变量,如下所示:
__declspec(dllexport) double Sub(int a,int b);
[DllImport("custom.dll", EntryPoint = "?Sub@@Y234NN@Z", CallingConvention = CallingConvention.Cdecl)]
public static extern double Sub(int a,int b);
我是在Configuration Manager中将项目的配置设置为Release时得到这个消息的。切换到调试解决此问题。$exception在javascript中看起来像是某种东西,c#前面不会有$exception,您能验证您的JS文件不是引发错误的文件吗?@RonBeyer此应用程序根本不处理JS。它完全是用C#编写的,您还可以看到异常类型是
System.Net.Http.HttpRequestException
,这是一个.Net异常$exception
是“当前异常”的调试器魔法。有时一些位被无缘无故地翻转,调试器停止工作,这种情况就会发生。如果您没有内存转储,也没有复制内存转储的步骤,恐怕您获得满意答案的可能性很小。我每隔几年就会看到这样的错误出现一次;耸耸肩,继续工作@usefulBee是的,但它不会出现在这样的错误消息中,因为它在编译时转换为string.Format
调用。异常是运行时的,因此在引发异常时,字符串不再包含$。