所以今天早上我遇到了一些代码,看起来像这样:try{x=SomeThingDangerous();returnx;}catch(Exceptionex){thrownewDangerousException(ex);}finally{CleanUpDangerousStuff();}现在这段代码可以正常编译并正常工作,但是从tryblock中返回感觉不对,尤其是在有关联的finally的情况下。我的主要问题是如果finally抛出它自己的异常会发生什么?您有一个返回的变量,但也有一个异常需要处理...所以我很想知道其他人对从tryblock中返回有何看法?
我们正在与同事讨论如果方法名称以“Try”开头意味着什么。有以下意见:当方法可以返回空值时使用“尝试”。当方法不会抛出异常时使用“Try”。官方定义是什么?方法名称中的“Try”是什么意思?是否有关于此的官方指南? 最佳答案 这被称为TryParse模式,并且已被Microsoft记录在案。officialExceptionsandPerformanceMSDNpagesays:ConsidertheTryParsepatternformembersthatmaythrowexceptionsincommonscenariostoa
哪个:using(varmyObject=newMyClass()){try{//somethinghere...}catch(Exceptionex){//Handleexception}}或try{using(varmyObject=newMyClass()){//somethinghere...}}catch(Exceptionex){//Handleexception} 最佳答案 我更喜欢第二个。也可以捕获与创建对象相关的错误。 关于c#-try/catch+using,正确的语
我需要使用WIF保护流式WCFnet.tcp服务端点。它应该根据我们的token服务器验证传入调用。该服务是流式传输的,因为它旨在传输大量数据和内容。这似乎是不可能的。如果我不能绕过这个陷阱,我的圣诞节就会毁了,我会把自己喝死在阴沟里,而快乐的购物者会慢慢地从我身边走过散热体。严肃点,你们。为什么这是不可能的?这是第22条军规。在客户端,我需要使用GenericXmlSecurityToken创建一个channel我从我们的token服务器获得。没问题。//peoplearoundherehatetheFrameworkDesignGuidelines.vartoken=Authent
我看到有人说使用不带参数的catch是一种不好的形式,尤其是当catch什么都不做的时候:StreamReaderreader=newStreamReader("myfile.txt");try{inti=5/0;}catch//Noargs,soitwillcatchanyexception{}reader.Close();然而,这被认为是好的形式:StreamReaderreader=newStreamReader("myfile.txt");try{inti=5/0;}finally//Willexecutedespiteanyexception{reader.Close();}
在维护我同事的代码时,即使是自称是高级开发人员的人,我也经常看到以下代码:try{//dosomething}catch{//Donothing}或者有时他们将日志记录信息写入日志文件,例如以下trycatchblocktry{//dosomework}catch(Exceptionexception){WriteException2LogFile(exception);}我只是想知道他们所做的是否是最佳实践?这让我感到困惑,因为在我看来,用户应该知道系统发生了什么。 最佳答案 我的异常处理策略是:通过Hook到Applicatio
在C#中使用switch语句与使用if/else语句有什么好处/坏处。除了代码的外观之外,我无法想象会有那么大的不同。是否有任何原因导致生成的IL或相关的运行时性能会截然不同?相关:Whatisquicker,switchonstringorelseifontype? 最佳答案 SWITCH语句仅在调试或兼容模式下生成与IF相同的程序集。在发布时,它将被编译成跳转表(通过MSIL'switch'语句)-这是O(1)。C#(与许多其他语言不同)也允许打开字符串常量-这有点不同。为任意长度的字符串构建跳转表显然是不切实际的,因此大多数情
我正在为一位friend审查一些代码,并说他在try-finallyblock内使用了return语句。即使tryblock的其余部分没有触发,Finally部分中的代码是否仍然触发?例子:publicboolsomeMethod(){try{returntrue;thrownewException("test");//doesn'tseemtogetexecuted}finally{//codeinquestion}} 最佳答案 简单的回答:是的。 关于c#-如果我在Tryblock中
在与Microsoft员工进行代码审查时,我们发现try{}block中有一大段代码。她和一位IT代表建议这可能会影响代码的性能。事实上,他们建议大部分代码应该在try/catchblock之外,并且应该只检查重要的部分。微软员工补充说,即将发布的白皮书警告不要使用不正确的try/catchblock。我环顾四周,找到了它canaffectoptimizations,但它似乎只适用于范围之间共享变量的情况。我不是在问代码的可维护性,甚至不是在处理正确的异常(毫无疑问,有问题的代码需要重构)。我也不是指使用异常进行流量控制,这在大多数情况下显然是错误的。这些都是重要的问题(有些更重要),
这个问题在这里已经有了答案:Isthereanysignificantdifferencebetweenusingif/elseandswitch-caseinC#?(21个回答)关闭2年前。我以前是Pascal人员,目前正在学习C#。我的问题如下:下面的代码是否比切换更快?inta=5;if(a==1){....}elseif(a==2){....}elseif(a==3){....}elseif(a==4){....}else....还有开关:inta=5;switch(a){case1:...break;case2:...break;case3:...break;case4:..