Ruby on rails 如何抓住';缺少标题';媒体\u wiki gem的错误
我正在使用rails框架。我正在使用“媒体维基”gem。我希望抓住“missingtitle”错误。见下文Ruby on rails 如何抓住';缺少标题';媒体\u wiki gem的错误,ruby-on-rails,ruby,ruby-on-rails-3,rubygems,mediawiki,Ruby On Rails,Ruby,Ruby On Rails 3,Rubygems,Mediawiki,我正在使用rails框架。我正在使用“媒体维基”gem。我希望抓住“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 pa
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'
输出的错误与以前相同。救援开始无法捕获此错误。如何捕获此错误。
MediaWiki::APIError
不是StandardError
的后代,这就是为什么它在默认情况下不被捕获rescue
语句(:“如果您编写的rescue子句没有参数列表,参数默认为StandardError。”)
因此,您需要在rescue子句中明确指定MediaWiki::apierro
:
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
如果您查看浏览器中的实际页面,您会发现这是一个错误:@RyanBigg AFAIU该问题与
MediaWiki
无关,它说明了“为什么救援不救援”。如果他提出了有效的API请求,他不需要救援!
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