0

私はレールフレームワークを使用しています。「media_wiki」ジェムを使用しています。「missingtitle」エラーをキャッチしたいと思います。下記参照

mw = MediaWiki::Gateway.new('http://en.wikipedia.org/w/api.php/')
wiki_content = mw.render('msadb')

エラーにつながりました

MediaWiki::APIError: MediaWiki::APIError: API error: code 'missingtitle', info 'The page you specified doesn't exist'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/mediawiki-gateway-0.5.0/lib/media_wiki/gateway.rb:711:in `get_response'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/mediawiki-gateway-0.5.0/lib/media_wiki/gateway.rb:669:in `block in make_api_request'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:228:in `call'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:228:in `process_result'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:178:in `block in transmit'
from /home/papri/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:745:in `start'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:172:in `transmit'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:64:in `execute'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient/request.rb:33:in `execute'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/rest-client-1.6.7/lib/restclient.rb:72:in `post'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/mediawiki-gateway-0.5.0/lib/media_wiki/gateway.rb:692:in `http_send'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/mediawiki-gateway-0.5.0/lib/media_wiki/gateway.rb:661:in `make_api_request'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/mediawiki-gateway-0.5.0/lib/media_wiki/gateway.rb:106:in `render'
from (irb):18
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.6/lib/rails/commands/console.rb:47:in `start'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.6/lib/rails/commands/console.rb:8:in `start'
from /home/papri/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.6/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'

そして、レスキュー開始ループを使用してこのエラーをキャッチしようとしたとき、うまくいきませんでした。

mw = MediaWiki::Gateway.new('http://en.wikipedia.org/w/api.php/')
begin
wiki_content = mw.render('msadb')
rescue
print "This is a missing title error"
end

出力は以前と同じエラーでした。Rescue begin はこのエラーをキャッチできませんでした。このエラーをキャッチするにはどうすればよいですか。

4

1 に答える 1

0

MediaWiki::APIErrorStandardError子孫ではないため、デフォルトrescueステートメントではキャッチされません ( 「パラメーター リストを指定せずにレスキュー句を記述した場合、パラメーターのデフォルトは StandardError になります」を参照してください)。

MediaWiki::APIErrorしたがって、レスキュー句で明示的に指定する必要があります。

mw = MediaWiki::Gateway.new('http://en.wikipedia.org/w/api.php/')
begin
  wiki_content = mw.render('msadb')
rescue MediaWiki::APIError => e
  print "This is a missing title error"
end

# ⇒ This is a missing title error => nil 
于 2013-02-16T06:22:03.140 に答える