Questions tagged «try-catch»

try-catch是一种语法结构,用于捕获代码段引发的异常

5
尝试捕获加快我的代码?
我编写了一些代码来测试try-catch的影响,但是看到了一些令人惊讶的结果。 static void Main(string[] args) { Thread.CurrentThread.Priority = ThreadPriority.Highest; Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime; long start = 0, stop = 0, elapsed = 0; double avg = 0.0; long temp = Fibo(1); for (int i = 1; i < 100000000; i++) { start = Stopwatch.GetTimestamp(); temp = Fibo(100); stop = Stopwatch.GetTimestamp(); elapsed …

10
我可以在同一catch子句中捕获多个Java异常吗?
在Java中,我想做这样的事情: try { ... } catch (/* code to catch IllegalArgumentException, SecurityException, IllegalAccessException, and NoSuchFieldException at the same time */) { someCode(); } ...代替: try { ... } catch (IllegalArgumentException e) { someCode(); } catch (SecurityException e) { someCode(); } catch (IllegalAccessException e) { someCode(); } catch (NoSuchFieldException e) { …

17
为什么在C#中捕获并抛出异常?
我正在看文章C#-可序列化DTO上的数据传输对象。 本文包括以下代码: public static string SerializeDTO(DTO dto) { try { XmlSerializer xmlSer = new XmlSerializer(dto.GetType()); StringWriter sWriter = new StringWriter(); xmlSer.Serialize(sWriter, dto); return sWriter.ToString(); } catch(Exception ex) { throw ex; } } 本文的其余部分看起来很合理(对菜鸟而言),但是try-catch-throw引发了WtfException ... 这不完全等同于根本不处理异常吗? Ergo: public static string SerializeDTO(DTO dto) { XmlSerializer xmlSer = new XmlSerializer(dto.GetType()); StringWriter sWriter = …

10
在Python中使用try-except-else是否是一种好习惯?
在Python中,我不时看到该块: try: try_this(whatever) except SomeException as exception: #Handle exception else: return something try-except-else存在的原因是什么? 我不喜欢这种编程,因为它使用异常来执行流控制。但是,如果它包含在语言中,则一定有充分的理由,不是吗? 据我了解,异常不是错误,并且仅应将其用于特殊情况(例如,我尝试将文件写入磁盘,并且没有更多空间,或者我没有权限),而不是流控制。 通常,我将异常处理为: something = some_default_value try: something = try_this(whatever) except SomeException as exception: #Handle exception finally: return something 或者,如果发生异常,我真的不想返回任何东西,那么: try: something = try_this(whatever) return something except SomeException as exception: #Handle exception


11
我可以尝试/捕捉警告吗?
我需要捕获一些从PHP本机函数抛出的警告,然后处理它们。 特别: array dns_get_record ( string $hostname [, int $type= DNS_ANY [, array &$authns [, array &$addtl ]]] ) DNS查询失败时,它将引发警告。 try/ catch不起作用,因为警告也不例外。 我现在有2个选择: set_error_handler 似乎有点过分,因为我必须使用它来过滤页面中的每个警告(这是真的吗?); 调整错误报告/显示,以使这些警告不会在屏幕上显示,然后检查返回值;如果为false,则找不到主机名的记录。 最佳做法是什么?

5
如何在R中编写trycatch
我想编写trycatch代码来处理从网络下载时出现的错误。 url <- c( "http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html", "http://en.wikipedia.org/wiki/Xz") y <- mapply(readLines, con=url) 这两个语句成功运行。在下面,我创建了一个不存在的网址: url <- c("xxxxx", "http://en.wikipedia.org/wiki/Xz") url[1]不存在。一个人如何编写一个trycatch循环(函数),以便: 如果URL错误,输出将为:“ Web URL错误,无法获取”。 如果URL错误,代码不会停止,而是继续下载直到URL列表的末尾?


11
不抛出异常时,try / catch块是否会损害性能?
在与Microsoft员工进行代码审查期间,我们在一个try{}块内遇到了很大一部分代码。她和一位IT代表建议,这可能会影响代码的性能。实际上,他们建议大多数代码应位于try / catch块之外,并且仅应检查重要部分。微软员工补充说,即将发布的白皮书警告不要尝试错误的try / catch块。 我环顾四周,发现它会影响优化,但似乎仅在范围之间共享变量时才适用。 我不是在问代码的可维护性,甚至不是在处理正确的异常(毫无疑问,有问题的代码都需要重构)。我也不是指使用异常进行流控制,这在大多数情况下显然是错误的。这些是重要的问题(有些更重要),但这里不是重点。 不抛出异常时,try / catch块如何影响性能?


25
您如何实施重试捕获?
Try-catch旨在帮助处理异常。这意味着它将以某种方式帮助我们的系统更强大:尝试从意外事件中恢复。 我们怀疑执行和指令(发送消息)时可能会发生某些事情,因此将其包含在try中。如果发生了几乎不可预料的事情,我们可以采取一些措施:编写渔获物。我不认为我们打电话来只是记录异常。我认为catch块旨在为我们提供从错误中恢复的机会。 现在,假设我们从错误中恢复了,因为我们可以修复错误所在。重试可能是非常好的: try{ some_instruction(); } catch (NearlyUnexpectedException e){ fix_the_problem(); retry; } 这将很快陷入永恒的循环,但是假设fix_the_problem返回true,然后我们重试。鉴于Java中没有这样的东西,您将如何解决此问题?解决该问题的最佳设计代码是什么? 鉴于我已经知道我所要的东西并没有被Java直接支持,所以这就像一个哲学问题。

15
如何使用try catch进行异常处理是最佳实践
在维护甚至声称自己是高级开发人员的同事的代码的同时,我经常看到以下代码: try { //do something } catch { //Do nothing } 或者有时他们将日志记录信息写入日志文件,例如以下代码try catch块 try { //do some work } catch(Exception exception) { WriteException2LogFile(exception); } 我只是想知道他们所做的是最佳做法吗?这让我感到困惑,因为在我的思考中,用户应该知道系统会发生什么。 请给我一些建议。

20
为什么最终尝试{…} {…}好?尝试{…}抓住{}不好吗?
我见过有人说使用不带参数的catch是一种不好的形式,尤其是在该catch没有执行任何操作的情况下: StreamReader reader=new StreamReader("myfile.txt"); try { int i = 5 / 0; } catch // No args, so it will catch any exception {} reader.Close(); 但是,这被认为是很好的形式: StreamReader reader=new StreamReader("myfile.txt"); try { int i = 5 / 0; } finally // Will execute despite any exception { reader.Close(); } 据我所知,将清理代码放入finally块与将清理代码放入try..catch块之后的唯一区别是,如果您在try块中包含return语句(在这种情况下,最终的清理代码将运行,但是try..catch之后的代码不会)。 否则,最后有什么特别之处?

20
为什么空捕获会阻止一个坏主意?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 改善这个问题 我刚刚在try-catch上看到了一个问题,哪些人(包括Jon Skeet)说空的捕获块是一个真正的坏主意?为什么这个?难道没有一个空的陷阱不是错误的设计决定吗? 我的意思是,例如,有时您想从某个地方(Web服务,数据库)获得一些其他信息,而您实际上并不在乎是否会获得此信息。因此,您尝试获取它,并且如果发生任何事情,那没关系,我只需添加一个“ catch(忽略了异常){}”,仅此而已


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.