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)
Является ли это приемлемым для вашей программы, я не могу сказать.
Я бы не стал пытаться подавить ошибку. Что-то не работает правильно, и вы должны выяснить, что это такое и как с этим справиться.
Я решил проблему. Оказывается, это проблема на стороне алхимиков в этом случае. Поиск таксономии просто не смог найти термин