我使用rufus 调度程序通过调用我的函数来运行夜间测试脚本。
有时我会看到“调度程序捕获异常:”一条消息,它抛出了我的一些函数。然后调度程序停止执行以下测试用例。
我怎样才能让调度程序运行所有测试用例而不管捕获到任何异常?
我使用rufus 调度程序通过调用我的函数来运行夜间测试脚本。
有时我会看到“调度程序捕获异常:”一条消息,它抛出了我的一些函数。然后调度程序停止执行以下测试用例。
我怎样才能让调度程序运行所有测试用例而不管捕获到任何异常?
这称为“异常吞咽”。你拦截了一个异常并且不做任何事情。
begin
# do some dangerous stuff, like running test scripts
rescue => ex
# do nothing here, except for logging, maybe
end
如果您不需要对异常执行任何操作,则可以省略=> ex
:
begin
# do some dangerous stuff, like running test scripts
rescue; end
如果您需要救援不从子类化的异常StandardError
,您需要更加明确:
begin
# do some dangerous stuff, like running test scripts
rescue Exception
# catches EVERY exception
end
我有时会使用这样一个事实,即您可以将块传递给方法,并且我有方法救援错误,并且我的代码可以继续执行。
def check_block
yield
rescue NoMethodError => e
<<-EOR
Error raised with message "#{e}".
Backtrace would be #{e.backtrace.join('')}
EOR
end
puts check_block {"some string".sort.inspect}
puts check_block {['some', 'array'].sort.inspect}
第一个区块将通过救援并返回报告,第二个区块将正常运行。
此救援仅NoMethodError
在您可能需要救援其他错误时进行救援。