草庐IT

catch-safeguarding

全部标签

c# - "Only catch exceptions you can handle"到底是什么意思?

我的任务是为我正在处理的.NET/C#项目编写异常处理策略和指南文档。我很难做到。关于如何/何时抛出、捕获、包装异常,有很多可用的信息,但我正在寻找描述除了包装和抛出异常之外的catchblock内应该进行哪些类型的事情。try{DoSomethingNotNice();}catch(ExceptionICanHandleex){//Lookingforexamplesofwhatpeoplearedoingincatchblocks//otherthanthroworwrappingtheexception,andthrowing.}提前致谢 最佳答案

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

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# - 为什么 catch block 中的 "throw"和 "throw ex"表现相同?

我读到在catchblock中时,我可以使用“throw;”重新抛出当前异常。或“抛出前;”。发件人:http://msdn.microsoft.com/en-us/library/ms182363%28VS.80%29.aspx“要保留异常的原始堆栈跟踪信息,请在不指定异常的情况下使用throw语句。”但是当我尝试这个时try{try{try{thrownewException("test");//13}catch(Exceptionex1){Console.WriteLine(ex1.ToString());throw;//16}}catch(Exceptionex2){Conso

C# - Try-Catch-Finally 返回

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

c# - 在 try catch block 中对 IDisposable 使用 block 是否有任何问题?

MSDNrecommends将实现IDisposable的类的任何实例化放入usingblock中。或者,如果它在try-catchblock中被实例化,则在Finally中执行Dispose。像这样在try-catchblock中使用usingblock有什么问题吗?try{using(Foobar=newFoo()){bar.doStuff();}}catch(Exceptione){//vomite}当然,我可以在Finallyblock中调用Dispose,但我是编程新手,我只是想知道是否做这样的事情这实际上是可以接受的,或者如果有人会拍打我的后脑勺并对我大喊我Doing-It

C# 在 try catch 的 catch 中使用 Continue

现在,我在continue语句方面遇到了一个大问题。FetchUnseenMessages可能会或可能不会返回错误,具体取决于它是否能够连接到指定的电子邮件帐户。如果FetchUnseenMessages失败,我希望continue语句返回到foreach语句中的下一个项目(尝试下一个电子邮件帐户)。我得到了一些意想不到的结果。我不相信continue语句会转到foreach语句中的下一项,而是返回到try语句的开头并再次尝试。我整天都被困在这个问题上,而且我很困。请帮忙。谢谢,克里斯。foreach(stringlinlUserName){try{newMessages=FetchU