Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何抓住';缺少标题';媒体\u wiki gem的错误_Ruby On Rails_Ruby_Ruby On Rails 3_Rubygems_Mediawiki - Fatal编程技术网

Ruby on rails 如何抓住';缺少标题';媒体\u wiki gem的错误

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

我正在使用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 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