2015-07-01 3 views
1

Я знаю, что механизатор имеет post_connect_hooks, который будет запущен после того, как страница будет восстановлена. Однако, если происходит исключение, например. если вы запрашиваете неизвестный URL-адрес, например "http://dsjkhbgdfb.comsfg", тогда он запускает pre_connect_hooks, но не post_connect_hooks. Есть ли способ гарантировать, что всегда нужно запускать post_connect_hooks (или что-то подобное)?Крючки всегда должны запускаться по запросу efter - также по ошибке

agent = Mechanize.new 

agent.pre_connect_hooks << lambda do |request_agent, request| 
    puts "increment a counter" 
end 

agent.post_connect_hooks << lambda do |request_agent, uri, response, response_body| 
    puts "decrement a counter" 
end 

agent.get("http://dsjkhbgdfb.comsfg") 
#=> increment a counter 
#=> SocketError: getaddrinfo: nodename nor servname provided, or not known 

Как вы можете видеть, «декремент счетчика» не запускается, поскольку перед этим происходит ошибка.

ответ

0

попробовать это, как это могло бы только заставить его и игнорировать ошибку

try: 
agent.get("http://dsjkhbgdfb.comsfg") 
except socket.error: 
pass # Basically, ignore the error 
Смежные вопросы