草庐IT

c# - 为什么要将 try/catch block 置于循环之外?

这是Practice&Patterns团队的CodeReview指南。http://msdn.microsoft.com/zh-cn/library/ms998574#scalenetchapt13_topic7(链接会自动导航到异常部分。)他们说在处理异常时应该将try/catchblock放在循环之外,我想知道为什么? 最佳答案 因为try...catchblock的底层实现增加了生成代码的开销,并且将这些开销放在紧密循环中从性能角度来看并不是一个好主意。从技术上讲,如果循环的所有迭代都是“相等的”,并且一旦发生异常循环应该立即

c# - 在 C# 中嵌套 2 个 try catch 语句是不好的做法吗?

下面的代码是不好的做法吗?try//TryOverallOperation{try//Trysection1ofoperation{}catch(exceptionex){//handleexceptioncode//throwtheexception}catch(exceptionex){//sendsoapexceptionbacktoSOAPclient.}我知道,从程序审查的角度来看,其他开发人员看到2次尝试直接嵌套时可能想知道为什么,但这完全是禁忌,还是现在已被接受?谢谢大家,我同意你们关于重构的所有意见,将为子功能创建一个单独的方法,该方法变得非常长。我对所有选择它的人印象

c# - Try-Catch 表达流畅

此LINQ查询表达式因Win32Exception“访问被拒绝”而失败:Process.GetProcesses().Select(p=>p.MainModule.FileName)这失败并出现IOException“设备未准备好”:DriveInfo.GetDrives().Select(d=>d.VolumeLabel)过滤掉不可访问的对象并避免异常的最佳方法是什么? 最佳答案 写一个扩展方法!voidMain(){varvolumeLabels=DriveInfo.GetDrives().SelectSafe(dr=>dr.V

c# - 我是否应该始终将我的代码包装在 try...catch block 中?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whentousetry/catchblocks?Mainmethodcodeentirelyinsidetry/catch:Isitbadpractice?WhentouseTryCatchblocks异常可能发生在任何地方,所以这让我思考:我是否应该始终将我的代码包装在try..catchblock中?这是针对C#的。(我可能遗漏了一些基本的东西,因为我还是个新手)编辑:看来这确实不是一个非常聪明的问题。我们在学校学到的唯一一件事就是使用try...catch来防止崩溃。对于异常,我们所做的是显示一个Me

c# - 迭代器 block 在 IL 中生成 try-fault

在尝试使用迭代器block后,我注意到生成的IL代码不是我期望的那样。生成try-faultblock而不是try-finallyblock,这是我从未见过的。我注意到编译器不允许我在“手写”C#中使用fault关键字。两者有区别吗?C#代码:staticIEnumerableReadAllLines(stringfileName){using(varfile=System.IO.File.OpenText(fileName)){strings;while((s=file.ReadLine())!=null){yieldreturns;}}}MSIL代码:.methodprivateh

c# - 如何从嵌套的 try-catch block 中重新抛出先前的异常? (C#)

我有尝试进行类型转换的代码。如果失败,我想尝试其他方法,如果同样失败,则重新抛出第一次转换尝试的原始异常。问题是我知道重新抛出的唯一方法是将“throw;”放在catchblock的末尾。当我只希望从另一个catchblock中重新抛出时会发生什么?try{valueFromData=Convert.ChangeType(valueFromData,pi.PropertyType);}catch(InvalidCastExceptione){Debug.WriteLine(String.Concat("Info-Directconversionfailed.Attemptingtoco

c# - 什么时候用什么时候不用 Try Catch Finally

我正在.net3.5中创建asp.netweb应用程序,我想知道何时使用以及何时不使用TryCatchFinallyblock?特别是,我的大部分trycatch都围绕着执行存储过程和填充文本字段或GridView?当您执行存储过程并填充数据显示控件时,您会EVERYTIME使用TryCatch吗?我的代码块通常是这样的:protectedvoidAddNewRecord(){try{//executestoredproc//populategridviewcontrolsortextboxes}catch(Exceptionex){//displayamessageboxtouser

c# - 在没有try catch的情况下检查文件是否正在使用?

有没有一种方法可以检查文件是否正在使用或未被其他进程打开,而不仅仅是尝试打开它并捕获异常?没有服务方法可以测试这种东西吗? 最佳答案 即使有,它也不会对你有多大好处,因为你仍然必须捕获异常以处理在初始检查和实际尝试打开/访问之间文件变得不可用的竞争条件我想不出初步防御检查有什么令人信服的优势。它只会导致不必要的代码重复。如果有这样的IsFileAccessible函数,它可能会被实现为一个巨大的try/catchblock,该block试图打开文件,捕获失败并返回结果。 关于c#-在没有

c# - 在 try & catch 中返回与在 finally 中返回?

其中任何一个都有风险吗?一个更好吗?或者它是您打印出来并throw飞镖来决定的那些东西之一?既然我了解了finally的工作原理,我就想这样做:try{stuffthatchangessomething...}catch(System.Exceptionex){something.worked=false;something.err=ex.Message;}finally{stuff.close();returnsomething;}但我见过:try{stuffthatchangessomething...returnsomething;}catch(System.Exceptione

c# - 你能设置 VS2008 中断 try-catch 语句中的错误吗

我喜欢VB6的一个原因是,无论您设置了何种错误处理,您都能够告诉开发环境在所有错误上中断。是否可以在VS2008中做同样的事情,以便调试器在出现任何错误时停止,即使它发生在try-catch语句中?当您处理一个包含500条记录的文件并且其中一条记录失败时,问题尤其严重-谁知道是哪条记录-您不想修改代码以便您的for计数器在该记录之外初始化for循环-这是草率的长期。您只希望调试器知道由于您在某处放置的某些设置而停止。 最佳答案 是的,转到“调试”菜单,选择“异常...”,为“公共(public)语言运行时异常”勾选“抛出”