Tag: exception处理

SystemExit是一种特殊的exception吗?

SystemExit与其他Exception的行为有何不同? 我想我理解为什么提出一个正确的例外是不好的一些推理。 例如,您不希望发生类似这样的奇怪事件: begin exit rescue => e # Silently swallow up the exception and don’t exit end 但rescue 如何忽略SystemExit ? (它使用什么标准?)

如何在“case when”中捕获Errno :: ECONNRESET类?

我的应用程序(Ruby 1.9.2)可能引发不同的exception,包括网络连接中断。 我rescue Exception => e ,然后做case/when以不同的方式处理它们,但是几个错误直接通过我的案例。 rescue Exception => e p e.class case e.class when Errno::ECONNRESET p 1 when Errno::ECONNRESET,Errno::ECONNABORTED,Errno::ETIMEDOUT p 2 else p 3 end end 打印: Errno::ECONNRESET 3

处理Ruby线程中引发的exception

我正在寻找一个经典的exception处理问题的解决方案。 考虑以下代码: def foo(n) puts ” for #{n}” sleep n raise “after #{n}” end begin threads = [] [5, 15, 20, 3].each do |i| threads < e puts “EXCEPTION: #{e.inspect}” puts “MESSAGE: #{e.message}” end 此代码在5秒后捕获exception。 但是如果我将数组更改为[15, 5, 20, 3] ,则上面的代码会在15秒后捕获exception。 简而言之,它始终捕获第一个线程中引发的exception。 任何想法,为什么如此。 为什么不在每次3秒后捕获exception? 如何通过任何线程捕获第一个引发的exception?