0

有时我会收到这个错误,我只想让 Rails 在错误发生时拯救/跳过错误,而不是完全停止程序。有没有好的方法来做到这一点?

下面是我的代码:

<% wiki = MediaWiki.new(:domain => 'commons.wikimedia.org') %>
<% wikimedia_user = wiki.find("File:Samuel_L_Jackson_as_Nick_Fury.jpg") %>

第二行导致此错误:

NoMethodError (undefined method `first' for nil:NilClass)

如果发生这种情况,我只想wikimedia_user设置为零。我尝试添加.inspect?到末尾.find,但我得到的只是错误。有没有办法做到这一点?

4

1 回答 1

3

在与要抑制异常并返回 nil 的行相同的行上,添加rescue nil到末尾。

<% wikimedia_user = wiki.find("File:Samuel_L_Jackson_as_Nick_Fury.jpg") rescue nil %>

注意:这通常不被认为是一种好的做法,因为从该行抛出的任何类型的异常都会被该救援捕获。在您的情况下,这可能不是一个大问题,但在前进时要牢记一些事情。

于 2012-12-14T05:33:14.260 回答