Escape/ продолжить выполнение программы, если ошибка (Ruby)

Я хочу попробовать запустить мой код, даже если у меня возникла ошибка. Я сообщу, где, как мне кажется, я получаю ошибку ниже и что это за ошибка:

require 'rubygems'
require 'simple_oauth'
require 'cloudsight'
require 'rubygems'
require 'net/http'
require 'uri'
require 'json'
require 'open-uri'
require 'openssl'
require 'hpricot'


#ALCHEMY

 file='C:\\Users\\ENTER USERNAME\\Desktop\\cloudsight.txt'
 f = File.open(file, "r")
 f.each_line {|line|

 tstart = 'name"=>"'
 tstop = '"'
 term = line[/#{tstart}(.*?)#{tstop}/m, 1]

 url = 'http://access.alchemyapi.com/calls'
 service = '/text/TextGetRankedTaxonomy'
 apikey = '?apikey=ENTER ALCHEMY API KEY'
 thething = '&text='
 termencoded = URI::encode(term)
 fullurl = url + service + apikey + thething + termencoded

 sleep 1
 opener = open(fullurl, 'Accept-Encoding' => '') {|f| f.read } 
 #print opener

Я думаю, что я получаю ошибку в этой точке.

 lstart = '<label>/'
 lstop = '</label>'
 label = opener[/#{lstart}(.*?)#{lstop}/m, 1]

 sleep 1
 cstart = '<score>'
 cstop = '</score>'
 confidence = opener[/#{cstart}(.*?)#{cstop}/m, 1]

 #data = label + ',' + confidence + ',' + line
 print label
 print confidence
 print "\n"

 }

Это ошибка, которую я, кажется, получаю:

C:/Ruby21/lib/ruby/2.1.0/uri/common.rb:304:in `escape': undefined method `gsub' for nil:NilClass (NoMethodError)

Любые идеи относительно того, как я могу передать ошибку / избежать ее / или сделать вместо этого строку?

2 ответа

Я предполагаю, что ошибка исходит из этой строки:

termencoded = URI::encode(term)

И, вероятно, происходит потому, что term ноль Добавьте отладку, чтобы увидеть, что term устанавливается до вызова этой строки. Если ты в порядке с term оставаясь пустым, вы можете изменить эту строку следующим образом:

termencoded = URI::encode(term.to_s)

Является ли это приемлемым для вашей программы, я не могу сказать.

Я бы не стал пытаться подавить ошибку. Что-то не работает правильно, и вы должны выяснить, что это такое и как с этим справиться.

Я решил проблему. Оказывается, это проблема на стороне алхимиков в этом случае. Поиск таксономии просто не смог найти термин

Другие вопросы по тегам