草庐IT

try-exception

全部标签

C# 等同于 Java 的 Exception.printStackTrace()?

是否有与Java的Exception.printStackTrace()等效的C#方法,或者我是否必须自己编写一些东西,通过InnerExceptions来处理? 最佳答案 试试这个:Console.WriteLine(ex.ToString());来自http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx:ThedefaultimplementationofToStringobtainsthenameoftheclassthatthrewthec

c# - C# 中 try/catch 的真正开销是多少?

所以,我知道try/catch确实会增加一些开销,因此不是控制流程的好方法,但这些开销从何而来,它的实际影响是什么? 最佳答案 这里要说明三点:首先,在您的代码中实际使用try-catchblock几乎没有或没有性能损失。当试图避免在您的应用程序中使用它们时,不应考虑这一点。只有在抛出异常时才会影响性能。除了发生其他人提到的堆栈展开操作等之外还抛出异常时,您应该知道会发生一大堆运行时/反射相关的事情以填充异常的成员堆栈跟踪对象和各种类型成员等类。我相信这就是为什么如果您要重新抛出异常,一般建议只是throw;而不是再次抛出异常或构造

c# - 通过等待任务或访问其 Exception 属性未观察到任务的异常。结果,未观察到的异常是

这是什么意思,如何解决?我正在使用TPL任务。整个错误ATask'sexception(s)werenotobservedeitherbyWaitingontheTaskoraccessingitsExceptionproperty.Asaresult,theunobservedexceptionwasrethrownbythefinalizerthread.atSystem.Threading.Tasks.TaskExceptionHolder.Finalize()mscorlib 最佳答案 如果您创建了一个任务,并且您从未调用过

c# - 无效泛型类型参数的最佳异常(exception)

我目前正在为UnconstrainedMelody编写一些代码它具有与枚举有关的通用方法。现在,我有一个带有一堆方法的静态类,这些方法仅旨在与“标志”枚举一起使用。我不能将其添加为约束...因此它们也可能会被其他枚举类型调用。在那种情况下,我想抛出一个异常,但我不确定抛出哪一个。只是为了使这个具体化,如果我有这样的东西://ReturnsavaluewithallbitssetbyanyvaluespublicstaticTGetBitMask()whereT:struct,IEnumConstraint{if(!IsFlags())//Thismethoddoesn'tthrow{t

c# - 'is' 与 try cast with null check

我注意到Resharper建议我打开这个:if(myObj.myPropisMyType){...}进入这个:varmyObjRef=myObj.myPropasMyType;if(myObjRef!=null){...}为什么它会建议进行此更改?我习惯了Resharper建议优化更改和代码减少更改,但这感觉就像它想把我的单一语句变成两行。根据MSDN:Anisexpressionevaluatestotrueifbothofthefollowingconditionsaremet:expressionisnotnull.expressioncanbecasttotype.Thatis

c# - try/catch/throw 和 try/catch(e)/throw e 的区别

有什么区别try{}catch{throw;}和try{}catch(Exceptione){throwe;}?我应该什么时候使用其中之一? 最佳答案 结构try{...}catch(){...}/*Youcanevenomitthe()here*/try{...}catch(Exceptione){...}的相似之处在于两者都会捕获tryblock中抛出的每个异常(并且,除非您只是简单地使用它来记录异常,否则应该是避免)。现在看看这些:try{...}catch(){/*...*/throw;}try{...}catch(Exce

c# - 从 try catch finally block 中返回是不好的做法吗?

所以今天早上我遇到了一些代码,看起来像这样:try{x=SomeThingDangerous();returnx;}catch(Exceptionex){thrownewDangerousException(ex);}finally{CleanUpDangerousStuff();}现在这段代码可以正常编译并正常工作,但是从tryblock中返回感觉不对,尤其是在有关联的finally的情况下。我的主要问题是如果finally抛出它自己的异常会发生什么?您有一个返回的变量,但也有一个异常需要处理...所以我很想知道其他人对从tryblock中返回有何看法?

c# - 什么时候应该在 C# 方法名称中使用 "Try"?

我们正在与同事讨论如果方法名称以“Try”开头意味着什么。有以下意见:当方法可以返回空值时使用“尝试”。当方法不会抛出异常时使用“Try”。官方定义是什么?方法名称中的“Try”是什么意思?是否有关于此的官方指南? 最佳答案 这被称为TryParse模式,并且已被Microsoft记录在案。officialExceptionsandPerformanceMSDNpagesays:ConsidertheTryParsepatternformembersthatmaythrowexceptionsincommonscenariostoa

c# - try/catch + using,正确的语法

哪个:using(varmyObject=newMyClass()){try{//somethinghere...}catch(Exceptionex){//Handleexception}}或try{using(varmyObject=newMyClass()){//somethinghere...}}catch(Exceptionex){//Handleexception} 最佳答案 我更喜欢第二个。也可以捕获与创建对象相关的错误。 关于c#-try/catch+using,正确的语

c# - Exception.Message 与 Exception.ToString()

我有记录Exception.Message的代码。但是,我读了一篇文章,其中指出最好使用Exception.ToString()。使用后者,您可以保留有关错误的更多重要信息。这是真的吗?继续替换所有代码记录Exception.Message是否安全?我还为log4net使用基于XML的布局.Exception.ToString()是否可能包含无效的XML字符,这可能会导致问题? 最佳答案 Exception.Message仅包含与异常关联的消息(doh)。示例:Objectreferencenotsettoaninstanceofa