Questions tagged «exception-handling»

异常是一种异常情况,需要偏离程序的正常流程。通常,异常不应导致完全失败,而应由异常处理程序来处理。异常处理是许多编程语言中的内置构造。通常,通过展开堆栈来处理异常,从而回滚到异常范围之外的已定义状态,然后调用处理程序块或例程。

5
在一行中捕获多个异常(块除外)
我知道我可以做到: try: # do something that may fail except: # do this if ANYTHING goes wrong 我也可以这样做: try: # do something that may fail except IDontLikeYouException: # say please except YouAreTooShortException: # stand on a ladder 但是,如果我想在两个不同的异常中做同样的事情,那么我现在想到的最好的方法就是: try: # do something that may fail except IDontLikeYouException: # say please except …

28
一次捕获多个异常?
不建议简单地抓住System.Exception。相反,仅应捕获“已知”异常。 现在,这有时会导致不必要的重复代码,例如: try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; } 我想知道:有没有一种方法可以捕获两个异常并且只WebId = Guid.Empty调用一次电话? 给定的示例非常简单,因为它只是一个GUID。但是,请设想一下代码中多次修改对象的情况,如果其中一种操作以预期的方式失败,则您想“重置” object。但是,如果有意外的例外,我仍然想将其提高。


13
如何在不停止程序的情况下打印完整的回溯?
我正在编写一个程序,该程序可以解析10个网站,找到数据文件,保存文件,然后解析它们以生成可以在NumPy库中轻松使用的数据。有万吨通过不良链接,不好的XML,缺项,其他的事情我还没有进行分类文件遇到错误的。我最初制作该程序来处理以下错误: try: do_stuff() except: pass 但是现在我想记录错误: try: do_stuff() except Exception, err: print Exception, err 请注意,这是打印到日志文件中以供以后查看。这通常会打印非常无用的数据。我想要的是在错误触发时打印完全相同的行,而没有try-except拦截异常,但是我不希望它暂停我的程序,因为它嵌套在我想要的一系列for循环中看到完成。


10
Node.js最佳实践异常处理
几天前我才开始尝试使用node.js。我已经意识到,只要程序中有未处理的异常,Node就会终止。这与我所见过的普通服务器容器不同,在普通服务器容器中,当发生未处理的异常时,只有工作线程死亡,并且容器仍能够接收请求。这引起了一些问题: 为process.on('uncaughtException')防范它的唯一有效途径? process.on('uncaughtException')在异步过程执行期间是否还会捕获未处理的异常? 是否存在已经构建的模块(例如发送电子邮件或写入文件),在未捕获的异常的情况下可以利用该模块? 我将不胜感激任何向我展示在node.js中处理未捕获异常的常见最佳实践的指针/文章




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 = …

7
开始,救援和确保使用Ruby?
我最近开始使用Ruby进行编程,并且正在研究异常处理。 我想知道ensureRuby是否等效finally于C#?我应该有: file = File.open("myFile.txt", "w") begin file << "#{content} \n" rescue #handle the error here ensure file.close unless file.nil? end 还是我应该这样做? #store the file file = File.open("myFile.txt", "w") begin file << "#{content} \n" file.close rescue #handle the error here ensure file.close unless file.nil? end 不会ensure得到所谓不管,即使一个异常没有什么引发,?

8
我什么时候应该真正使用noexcept?
该noexcept关键字可以适当地应用于许多功能签名,但我不能确定何时我应该考虑在实践中使用它。根据我到目前为止所读的内容,最后一刻添加noexcept似乎解决了移动构造函数抛出时出现的一些重要问题。但是,对于一些实际的问题,我仍然无法提供满意的答案,这些问题使我不得不首先阅读更多内容noexcept。 我知道有很多函数永远不会抛出的示例,但是编译器无法自行确定。noexcept在所有这种情况下,我都应该在函数声明后附加吗? 必须考虑noexcept在每个函数声明之后是否都需要追加操作,这将大大降低程序员的工作效率(坦率地说,这将是一件痛苦的事情)。在哪些情况下我应该更小心使用它noexcept,在哪些情况下我可以摆脱隐含的含义noexcept(false)? 使用后,我什么时候才能实际观察到性能改善noexcept?特别是,给出一个示例代码,在添加之后C ++编译器能够为其生成更好的机器代码noexcept。 我个人很在乎,noexcept因为为编译器提供了增加的自由度,可以安全地应用某些优化。现代编译器是否noexcept以此方式利用?如果没有,我可以指望其中的一些在不久的将来这样做吗?

11
如何记录带有调试信息的Python错误?
我正在使用以下命令将Python异常消息打印到日志文件中logging.error: import logging try: 1/0 except ZeroDivisionError as e: logging.error(e) # ERROR:root:division by zero 除了异常字符串以外,是否可以打印有关异常及其生成代码的更多详细信息?行号或堆栈跟踪之类的东西会很棒。


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

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.