草庐IT

try-except-else

全部标签

c# - 是否可以在 C# 的 if-else 语句中定义类似 'between' 的内容?

想请教比我C#能力强的人。是否可以减少下面的代码if(val>20&&val40&&val72&&val假设我有超过10-11个if-else语句。缩短上述代码的最佳方法是什么?我想在sql中使用类似between的东西。 最佳答案 定义一个extensionmethod:publicstaticboolBetween(thisintsource,inta,intb){returnsource>a&&source然后,使用它:if(val.Between(20,40))//...正如oɔɯǝɹ在他的评论中正确指出的那样,您可以更进一

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)语言运行时异常”勾选“抛出”

c# - 如何将 if、else if 逻辑转换为三元运算符?

我只是想知道这是否可行,因为我开始使用三元运算符来减少代码行数并且我很喜欢它。if(x==y){z+=x;}elseif(x==z){z+=y;}else{z+=1;}如果只有一个这样的if语句,我现在可以这样做:z=x==y?z+=x:z+=1; 最佳答案 应该是这样的:z=x==y?z+x:x==z?z+y:z+1;如果您使用z+=x作为操作数,它最终会执行z=(z+=x)。虽然它在这种特殊情况下有效,但由于表达式z+=x的结果是z的最终值,它在其他情况下可能无效。但是,由于所有操作都有共同的z+=,您可以这样做:z+=x==y

c# - 具有返回类型的 try-catch block

如果我有一个返回某些东西的方法,比如publicDataTableReturnSomething(){try{//logicherereturnds.Tables[0];}catch(Exceptione){ErrorString=e.Message;}}这会产生编译器错误,显然是因为catch{}block没有返回任何内容。所以当我有带返回值的方法时,我不使用try-catchblock,这是一种不好的做法。如果有错误,我想将错误字符串设置为该错误。但是我也需要一个返回值。建议? 最佳答案 像这样将返回值存储在临时变量中:publ

c# - 在没有单独的 try-catch block 的情况下 try catch 每一行代码

我目前没有这个问题,但你永远不知道,思想实验总是很有趣。忽略你的体系结构必须要尝试这样做的明显问题,让我们假设你有一些别人设计的可怕的代码,你需要做一个在同一代码块中进行大量不同的操作,例如:WidgetMaker.SetAlignment(57);contactForm["Title"]=txtTitle.Text;Casserole.Season(true,false);((RecordKeeper)Session["CasseroleTracker"]).Seasoned=true;乘以一百。其中一些可能有效,另一些可能会出现严重错误。您需要的是“onerrorresumenex

c# - System.Drawing Out of Memory Exception on Main() 方法 - C#

我的程序是一个CRM,我使用了RadRibbonBar、许多带图像的按钮、RadGridView(其中一些列包含图像)和许多其他包含图像的控件。这是一个mdi父/子程序。在许多情况下,当加载一个mdi子项或使用一些GridView时,程序会挂起并给我这个错误:OutOfMemoryExceptionoccurredinSystem.Drawing.dll我在某些部分尝试了GC.Collect()但没有成功。对于设置图像,没有代码!例如,为按钮设置图像我在visualstudio中使用了它的属性。我在可视模式下使用属性面板以这种方式设置了所有其他控件图像。这些是一些与绘图相关的设计器代码

c# - .NET 反编译器区分 "using"和 "try...finally"

给定以下C#代码,其中Dispose方法以两种不同的方式调用:classDisposable:IDisposable{publicvoidDispose(){}}classProgram{staticvoidMain(string[]args){using(vardisposable1=newDisposable()){Console.WriteLine("using");}vardisposable2=newDisposable();try{Console.WriteLine("try");}finally{if(disposable2!=null)((IDisposable)dis

C# - Try-Catch-Finally 返回

这个问题在这里已经有了答案:WillcodeinaFinallystatementfireifIreturnavalueinaTryblock?(12个答案)关闭7年前。我有以下代码:publicDataTableGetAllActiveUsers(){DataTabledataTable=newDataTable();try{connection.Open();SqlCommandgetAllActiveUsersCommand=newSqlCommand(getAllUsers,connection);SqlDataAdapterdataAdapter=newSqlDataAdap

c# - 系统.ComponentModel.Win32Exception : Access is denied Error

我正在使用C#代码启动和停止窗口服务,但出现此错误。System.ComponentModel.Win32Exception:Accessisdenied我的代码:publicvoidStartService(stringserviceName,inttimeoutMilliseconds){ServiceControllerservice=newServiceController(serviceName);try{TimeSpantimeout=TimeSpan.FromMilliseconds(timeoutMilliseconds);service.Start();service