草庐IT

tri-plane

全部标签

c# - 为什么 Try-Catch 需要花括号

只是好奇:为什么trycatchinC#的语法是(Java也是?)为多个语句硬编码?为什么语言不允许:inti;strings=DateTime.Now.Seconds%2==1?"1":"not1";tryi=int.Parse(s);catchi=0;该示例仅供引用。我知道有int.TryParse. 最佳答案 考虑一下这里实际上有三个(或更多)代码块:try{}catch(myexcption){}catch(myotherexception){}finally{}请记住,这些是在更大上下文的范围内,未捕获的异常可能会在堆栈的

c# - C#中有 "try to lock, skip if timed out"操作吗?

我需要尝试锁定一个对象,如果它已经被锁定就继续(超时后,或者没有它)。C#lock语句是阻塞的。 最佳答案 Ed为您提供了合适的功能。只是不要忘记调用Monitor.Exit()。您应该使用try-finallyblock来保证正确清理。if(Monitor.TryEnter(someObject)){try{//useobject}finally{Monitor.Exit(someObject);}} 关于c#-C#中有"trytolock,skipiftimedout"操作吗?,我们

c# - 在 C# 中验证 URL 的一种比 try-catch 更好的方法?

我正在构建一个应用程序以从Internet检索图像。尽管它工作正常,但在应用程序中使用try-catch语句时速度很慢(在错误的给定URL上)。(1)这是验证URL和处理错误输入的最佳方式吗?还是我应该改用Regex(或其他一些方法)?(2)如果我没有在文本框中指定http://,为什么应用程序会尝试在本地查找图像?privatevoidbtnGetImage_Click(objectsender,EventArgse){Stringurl=tbxImageURL.Text;byte[]imageData=newbyte[1];using(WebClientclient=newWebC

c# - C# 中 try/finally 的开销?

我们已经看到很多关于何时以及为什么使用try/catch和try/catch/最后。而且我知道try/finally肯定有一个用例(特别是因为它是using语句的实现方式)。我们还看到了关于theoverheadoftry/catchandexceptions的问题.但是,我链接到的问题并没有讨论JUSTtry-finally的开销。假设tryblock中发生的任何事情都没有异常,确保finally语句在离开try时执行的开销是多少block(有时通过从函数返回)?同样,我只询问关于try/finally,没有catch,没有抛出异常。谢谢!编辑:好的,我将尝试更好地展示我的用例。我应

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