草庐IT

try-catch-rethrow

全部标签

c# - 不使用 try/catch 检查格式正确的 XML?

有谁知道如何在try/catchblock中不使用XmlDocument.LoadXml()之类的东西来检查字符串是否包含格式正确的XML?我得到的输入可能是XML,也可能不是XML,我希望代码能够识别输入可能不是XML而不依赖于try/catch,以提高速度和一般原则,即非特殊情况不应引发异常(exception)。我目前有执行此操作的代码;privateboolIsValidXML(stringvalue){try{//Checkweactuallyhaveavalueif(string.IsNullOrEmpty(value)==false){//Trytoloadthevalu

c# - 如何使用try-catch获取代码的错误行号

我想获取导致错误的代码的行号。例如;staticvoidMain(string[]args){using(SqlConnectionconn=newSqlConnection(bagcum)){SqlCommandcmd=conn.CreateCommand();cmd.CommandText="DONTINSERTintoGIVEMEERROR(CamNo,Statu)values("+23+","+0+")";conn.Open();intn=cmd.ExecuteNonQuery();}}所以我们知道代码不起作用,它会抛出异常代码的行号是:intn=cmd.ExecuteNonQ

c# - 如何用 resume 实现一个 "catch' em all"异常处理程序?

我想知道如何在应用程序级别编写一个catch'emall异常处理程序,让用户可以选择恢复应用程序流程? 最佳答案 如果您正在运行Windows窗体应用程序:将处理程序添加到Application.ThreadException事件。 关于c#-如何用resume实现一个"catch'emall"异常处理程序?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/337702/

c# - 我应该在 C# 中多久使用一次 try 和 catch?

在编写其第一优先级是永不崩溃的C#应用程序时,我应该多久使用一次try-catchblock?我可以将一个方法中的所有语句封装在try-catchblock中吗?publicvoidSomeMethod(){try{//entirecontentsofthefunction//librarycalls//functioncalls//variableinitialization..etc}catch(Exceptione){//recover}}将所有内容包装在try-catchblock中有什么缺点? 最佳答案 唯一的缺点是在实际

c# - 为什么 .NET 异常没有被 try/catch block 捕获?

我正在使用ANTLR开发一个项目C#的解析器库。我已经构建了一个语法来解析一些文本并且效果很好。但是,当解析器遇到非法或意外标记时,它会抛出许多异常之一。问题是在某些情况下(不是全部)我的try/catchblock不会捕获它而是作为未处理的异常停止执行。我的问题是,除了在我的完整代码中,我无法在其他任何地方复制这个问题。调用堆栈显示异常肯定发生在我的try/catch(Exception)block中。我唯一能想到的是,在我的代码和抛出异常的代码之间发生了一些ANTLR汇编调用,而且这个库没有启用调试,所以我无法单步执行它。我想知道不可调试程序集是否会抑制异常冒泡?调用堆栈如下所示;

c# - 比多个 catch block 更优雅的异常处理?

这个问题在这里已经有了答案:Catchmultipleexceptionsatonce?(29个答案)关闭9年前。使用C#,有没有更好的方法来处理多种类型的异常,而不是一堆丑陋的catchblock?什么是这种情况的最佳做法?例如:try{//Manytypesofexceptionscanbethrown}catch(CustomExceptionce){...}catch(AnotherCustomExceptionace){...}catch(Exceptionex){...}

c# - 使用不带参数的 catch

有什么区别:catch{MessageBox.Show("Error.");}和:catch(Exceptionex){MessageBox.Show("Error.");//weneveruseex,soisitbettertousecatchwithoutarguments?} 最佳答案 从.NET2开始,如果您不调整配置​​?什么都没有。在那之前,或者通过一些我记不清的配置调整,非托管代码可能会抛出一个异常,没有被转换成一个Exception-兼容对象。请注意,在这两者之间还有另一个选项,您可以在其中指定类型但不指定变量:ca

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# - float 解析 : Is there a Catch All algorithm?

多文化编程中有趣的部分之一是数字格式。美国人使用10,000.50德国人使用10.000,50法语使用10000,50我的第一种方法是获取字符串,向后解析它直到遇到分隔符并将其用作我的小数点分隔符。这有一个明显的缺陷:10.000会被解释为10。另一种方法:如果字符串包含2个不同的非数字字符,则使用最后一个作为小数点分隔符并丢弃其他字符。如果我只有一个,请检查它是否出现不止一次,如果出现则丢弃它。如果它只出现一次,请检查它后面是否有3位数字。如果是,则丢弃它,否则,将其用作小数点分隔符。显而易见的“最佳解决方案”是检测用户的文化或浏览器,但如果您的法国人使用的是en-USWindows