Nak*_*lon 29 ruby exception-handling case errno
我的应用程序(Ruby 1.9.2)可能会引发不同的异常,包括网络连接中断.我rescue Exception => e,然后case/when以不同的方式处理它们,但是几个错误直接通过我的案例else.
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
Run Code Online (Sandbox Code Playgroud)
打印:
Errno::ECONNRESET
3
Run Code Online (Sandbox Code Playgroud)
Chu*_*bas 51
这是因为===操作员在课堂上的工作方式Class
该case语句在内部调用===您正在评估的对象上的方法.如果你想测试e课程,你只需要测试e,而不是e.class.这是因为e.class将落入when Class情况下,因为,E.class使用是一个类.
rescue Exception => e
case e
when Errno::ECONNRESET
p 1
when Errno::ECONNRESET,Errno::ECONNABORTED,Errno::ETIMEDOUT
p 2
else
p 3
end
end
Run Code Online (Sandbox Code Playgroud)
是的,Ruby有时可能会有奇怪的语义
| 归档时间: |
|
| 查看次数: |
10878 次 |
| 最近记录: |