草庐IT

c# - “使用”语句与 'try finally'

我有一堆属性,我将对其使用读/写锁。我可以使用tryfinally或using子句来实现它们。在tryfinally中,我会在try之前获取锁,并在finally中释放。在using子句中,我将创建一个类,该类在其构造函数中获取锁,并在其Dispose方法中释放。我在很多地方都使用读/写锁,所以我一直在寻找可能比tryfinally更简洁的方法。我很想听听一些关于为什么不推荐一种方式,或者为什么一种方式可能比另一种方式更好的想法。方法一(最后尝试):staticReaderWriterLockrwlMyLock_m=newReaderWriterLock();privateDateTi

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

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

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# - 为什么 try {...} finally {...} 好;试试 {...} catch{} 不好?

我看到有人说使用不带参数的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();}

c# - 如何使用 try catch 进行异常处理是最佳实践

在维护我同事的代码时,即使是自称是高级开发人员的人,我也经常看到以下代码:try{//dosomething}catch{//Donothing}或者有时他们将日志记录信息写入日志文件,例如以下trycatchblocktry{//dosomework}catch(Exceptionexception){WriteException2LogFile(exception);}我只是想知道他们所做的是否是最佳实践?这让我感到困惑,因为在我看来,用户应该知道系统发生了什么。 最佳答案 我的异常处理策略是:通过Hook到Applicatio

c# - 如果我在 Try block 中返回值,Finally 语句中的代码会触发吗?

我正在为一位friend审查一些代码,并说他在try-finallyblock内使用了return语句。即使tryblock的其余部分没有触发,Finally部分中的代码是否仍然触发?例子:publicboolsomeMethod(){try{returntrue;thrownewException("test");//doesn'tseemtogetexecuted}finally{//codeinquestion}} 最佳答案 简单的回答:是的。 关于c#-如果我在Tryblock中