我需要清除这个警告: try { doSomething() } catch (AmbiguousMatchException MyException) { doSomethingElse() } 编者告诉我: variables“MyException”被声明,但从未使用过 我怎样才能解决这个问题。
有没有Java的Exception.printStackTrace()的C#等价方法,或者我必须自己写一些东西,通过InnerExceptions工作?
我有以下服务装饰 <ExceptionShielding("MyExceptionPolicyName")> 当一个错误exception被抛出时,我的策略会检测到错误并且很好地login。 它采用handlingInstance Id并将其与错误一起logging以供参考。 我注意到的是,在错误中返回的Guid“Error ID:”与传入处理instanceId的错误不同。 我也试图装饰这样的操作 <FaultContract(GetType(ValidationFault))> 但是这会产生相同的结果。 我想要做的是如何捕捉到“错误ID:”传回给消费者,所以我可以logging它与例外。 *补充信息:exception策略处理程序是一个自定义exception,它将各种属性和数据logging到特定的exception日志数据库模式中。 任何人都知道如何做到这一点? 更新:每@ Jay Patel的评论,我把这个添加到我的configuration启用跟踪 <system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"> <listeners> <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "c:\Temp\Traces.svclog" /> </listeners> </source> </sources> </system.diagnostics> 然后,我执行了一个请求来获得由exception屏蔽屏蔽的故障响应。 错误响应string格式如下:“使用此服务时发生错误,请与您的pipe理员联系以获取更多信息。错误ID:{GUID}” 然后我查看了跟踪日志,发现没有任何证据的GUID或这个string。 在使用ExceptionShielding时,任何关心查看其示例的人都可以通过tracelog链接到这个tracelog。 UPDATE2: 再次,根据@Jay Patel的评论,补充说。 我为maxMessageLog尝试了-1和max int值,以确保获得该日志中的最大数据量。 <diagnostics> <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" /> </diagnostics> 日志没有帮助。 它甚至不包括任何关于回答我的问题的事情。 为了澄清的情况下,不清楚上面…我希望能够在消息中的“错误ID:”后面捕获的GUID回到客户端,所以我可以loggingexception处理程序logging的exception。 […]
在[except.ctor]标准( N4140 )保证: 自从try块被input后,为所有构造的自动对象调用析构函数… 但是在下面的例子中,空输出certificate了函数foo的返回值没有被破坏,尽pipe它已经被构造了。 使用g ++(5.2.1)和clang ++(3.6.2-1)和选项-O0 -fno-elide-constructors -std=c++14 。 struct A { ~A() { cout << "~A\n"; } }; struct B { ~B() noexcept(false) { throw 0; } }; A foo() { B b; return {}; } int main() { try { foo(); } catch (…) { } } 这是g ++和clang ++中的一个bug,还是函数返回值不被视为自动对象,还是C ++语言中的循环漏洞? […]
在Python中使用exception链是否有一个标准的方法? 像Javaexception'造成'? 这是一些背景。 我有一个主要exception类DSError模块: class DSError(Exception): pass 在这个模块的某个地方会有: try: v = my_dict[k] something(v) except KeyError as e: raise DSError("no key %s found for %s" % (k, self)) except ValueError as e: raise DSError("Bad Value %s found for %s" % (v, self)) except DSError as e: raise DSError("%s raised in %s" % (e, self)) 基本上这个片段应该只抛出DSError,告诉我发生了什么,为什么。 事情是,try块可能会抛出很多其他exception,所以我宁愿如果我可以做这样的事情: […]
我有一个函数foo可以抛出一个exception。 在另一个函数中,我调用foo但是如果抛出exception,我可以添加一些更多的细节。 (我宁愿不将这样的信息作为parameter passing给foo因为它不属于那个属性,因为这个函数的generics特性。) 所以我在调用者中这样做: try { foo(); } catch (bar& ex){ ex.addSomeMoreInformation(…); throw; } 会throw重新抛出修改的exception还是我需要使用throw ex; ? 后者大概会采取价值副本,所以我宁愿不这样做。 会throw一个有价值的副本吗? 我怀疑它不会。 (我知道我可以validation,但我担心绊倒一个未指定或未定义的结构,所以想知道肯定)。
我正在寻找shell脚本中的exception处理机制。 有没有尝试,在shell脚本中捕获等价的机制?
我已经多次听说过,最好能把一个exception作为const引用而不是引用来引用。 为什么是 try { // stuff } catch (const std::exception& e) { // stuff } 比…更好 try { // stuff } catch (std::exception& e) { // stuff }
在C#中实现自定义exception的行业标准最佳实践是什么? 我已经检查了谷歌,有很多的build议,但是我不知道哪个更具有可信度。 如果有人与权威文章有任何联系,那也是有帮助的。
我有以下情况。 我有一个Java类,从另一个基类inheritance,并重写一个方法。 基本方法不会抛出exception,因此没有throws …声明。 现在我自己的方法应该可以抛出exception,但我可以select 吞下例外 添加一个抛出声明 这两个都不令人满意,因为第一个会默默地忽略exception(确定我可以执行一些日志logging),第二个会由于不同的方法头文件而产生编译器错误。 public class ChildClass extends BaseClass { @Override public void SomeMethod() { throw new Exception("Something went wrong"); } }