我有一个救援块,它检查是否抛出了正确的异常,如下所示:
rescue Exception
if $!.to_s() != "myException"
Err("Unexpected error :" + $!)
end
else
Err("No error")
Run Code Online (Sandbox Code Playgroud)
$!.to_s()当我puts喜欢时,我包含如下大字符串:
puts $!.to_s()
Run Code Online (Sandbox Code Playgroud)
上述声明puts之前的输出if是:
myException \n
th sdfsj dsjhf sdfj \n
asdj jkds fdf j
Run Code Online (Sandbox Code Playgroud)
所以在if声明中我想比较输出中的第一行$!.to_s()和双引号中的字符串.
有任何建议如何解决这个问题?
这让我的眼睛受伤.请在ruby中进行面向对象的编程.
class MyException < StandardError; end
Run Code Online (Sandbox Code Playgroud)
将定义一个你可以拯救的新例外
begin
do_something_that_raises_expected_exception
rescue MyException
do_something_else
end
Run Code Online (Sandbox Code Playgroud)
所以你不需要任何String比较.
如果你想走在路上,请使用string.match exception_name,但我建议不要这样做.
关于救援的另一个词:rescue Exception如果可能的话,不要做,只是使用rescue,因为Exception捕获类似的东西SyntaxError(这可能不是意图).对于流量控制而言,例外情况ruby不赞成,而不是python.
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |