【发布时间】:2013-04-04 02:33:31
【问题描述】:
我注意到来自 WCF 服务的错误异常有些奇怪,并且能够重新创建它:
创建一个新的控制台应用并添加这些类型:
class TestException<T> : Exception where T : IError, new() { }
interface IError { }
class NewError : IError { }
class NormalException : Exception { }
在Main函数中,添加以下代码:
static void Main(string[] args)
{
try
{
throw new NormalException();
}
catch (NormalException ne)
{ //break point here
}
try
{
throw new TestException<NewError>();
}
catch (TestException<NewError> ge)
{//break point here
}
}
当第一次接球时,窗口将显示如下:
当遇到通用异常时,您会看到这个窗口:
注意消息中额外的 > 字符。
这是正常的和预期的,还是我报告的?
任何人都可以尝试在 VS 2012 上复制这个吗?
【问题讨论】:
-
这是一个错误,我已经确认它仍然存在于 Visual Studio 2012 中。
-
这看起来像是 VS 中的一个错误。我强烈建议您在 MSConnect 上提交此文件:connect.microsoft.com
-
好的,感谢您的确认。我已经在这里提交了一份报告。 connect.microsoft.com/VisualStudio/feedback/details/782789/…
-
@asawyer - 如果您愿意,我可以关闭,但您也可以在正确确认这是一个错误后添加您自己的答案。
-
如果类型参数可以不带句点写入(从命名空间访问),问题似乎就消失了。例如,如果您将
NewError类声明移到namespace scratcpad { ... }块之外,以便该类驻留在全局命名空间中,错误就会消失。TestException<>上的接口和泛型约束不需要重现。
标签: c# visual-studio-2010