Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# 名称'$例外情况';在当前上下文中不存在_C#_.net_Debugging_Exception_Visual Studio 2012 - Fatal编程技术网

C# 名称'$例外情况';在当前上下文中不存在

C# 名称'$例外情况';在当前上下文中不存在,c#,.net,debugging,exception,visual-studio-2012,C#,.net,Debugging,Exception,Visual Studio 2012,今天我在工作中调试一个应用程序。我继续在一个catch块中设置断点,以便更详细地检查异常 查看详细信息模式窗口正常打开,但它没有向我显示异常的详细信息,而是抛出了一个奇怪的错误,我从未得到过,也不知道它的含义: 错误显示: 当前上下文中不存在名称“$exception” 这是因为我在catch块范围内,所以我应该能够看到我的异常 重新启动应用程序后,我成功地调试了它。这是我(到目前为止)唯一一次犯这个错误 有人知道它的意思吗?我如何修复它(而不必重新启动应用程序) 注意:我正在使用Visual

今天我在工作中调试一个应用程序。我继续在一个catch块中设置断点,以便更详细地检查异常

查看详细信息
模式窗口正常打开,但它没有向我显示异常的详细信息,而是抛出了一个奇怪的错误,我从未得到过,也不知道它的含义:

错误显示:

当前上下文中不存在名称“$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,则在项目的属性页中设置公共语言运行库支持(/CLR)< /C>参数>代码>公共语言运行时支持(/CLR)< /C>br/>
步骤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
调用。异常是运行时的,因此在引发异常时,字符串不再包含$。