simplify raised errors

This commit is contained in:
Ward Wouts 2002-07-04 22:29:38 +00:00
parent a6acfd99fc
commit 8a31948d36

View file

@ -16,11 +16,8 @@ require 'tempfile'
require 'timeout' require 'timeout'
class ArticleError < RuntimeError; end class ArticleError < RuntimeError; end
class ReconnectError < ArticleError; end class TempError < ArticleError; end
class GroupInfoError < ArticleError; end class PermError < ArticleError; end
class BodyError < ArticleError; end
class XhdrError < ArticleError; end
class TimeoutError < ArticleError; end
class Article class Article
@ -60,7 +57,7 @@ def reconnect(server)
rescue SocketError rescue SocketError
print "Reconnect to #{server} failed\n" print "Reconnect to #{server} failed\n"
del_server(server) del_server(server)
raise ReconnectError raise PermError, "Couldn't connect to #{server}"
end end
print "Succesfully reconnected to #{server}\n" print "Succesfully reconnected to #{server}\n"
end end
@ -88,7 +85,8 @@ def get_articles(cachedir=false)
for server in @connections.keys for server in @connections.keys
begin begin
first, last = get_group_info(server) first, last = get_group_info(server)
rescue ReconnectError, GroupInfoError rescue PermError
print "#{$!}\n"
del_server(server) del_server(server)
next next
end end
@ -108,13 +106,14 @@ def get_articles(cachedir=false)
print "rangelist: #{rangelist}\n" if Debuglevel >1 print "rangelist: #{rangelist}\n" if Debuglevel >1
print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel >1 print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel >1
print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >1 print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >1
begin
unless rangelist == nil or rangelist =~ /^$/ unless rangelist == nil or rangelist =~ /^$/
for i in rangelist.split(',') for i in rangelist.split(',')
print "i: #{i}\n" if Debuglevel > 1 print "i: #{i}\n" if Debuglevel > 1
begin begin
resp, subj_lines = get_xhdr(server, i, "subject") resp, subj_lines = get_xhdr(server, i, "subject")
resp, messid_lines = get_xhdr(server, i, "message-id") resp, messid_lines = get_xhdr(server, i, "message-id")
rescue TimeoutError, ReconnectError, XhdrError, GroupInfoError rescue TempError
print "Caught: #{$!} reading from #{server}\n" print "Caught: #{$!} reading from #{server}\n"
next next
end end
@ -138,6 +137,10 @@ def get_articles(cachedir=false)
end end
end end
end end
rescue PermError
del_server(server)
next
end
end end
save_cache(cachedir) save_cache(cachedir)
end end
@ -153,7 +156,7 @@ def get_group_info(server)
resp, count, first, last, name = @connections[server]["nntp"].group(@group) resp, count, first, last, name = @connections[server]["nntp"].group(@group)
rescue Net::NNTP::RuntimeError rescue Net::NNTP::RuntimeError
print "Got error \"#{$!}\" from #{server}\n" print "Got error \"#{$!}\" from #{server}\n"
raise GroupInfoError raise PermError, "$!"
rescue Errno::EPIPE, Errno::ECONNRESET rescue Errno::EPIPE, Errno::ECONNRESET
print "Caught Errno::EPIPE reading from server #{server}\n" print "Caught Errno::EPIPE reading from server #{server}\n"
print "Error: #{$!}\n" print "Error: #{$!}\n"
@ -163,7 +166,7 @@ def get_group_info(server)
end end
rescue TimeoutError rescue TimeoutError
timedout += 1 timedout += 1
raise TimeoutError, "Too many timeouts! (get_group_info)\n" if timedout > 1 raise PermError, "Too many timeouts! (get_group_info)\n" if timedout > 1
print "Time out, reconnecting to server...\n" print "Time out, reconnecting to server...\n"
reconnect(server) reconnect(server)
retry retry
@ -202,7 +205,7 @@ def get_xhdr(server, range, header)
rescue TimeoutError rescue TimeoutError
print "Time out, reconnecting to server\n" print "Time out, reconnecting to server\n"
timedout += 1 timedout += 1
raise TimeoutError, "Too many timeouts! (get_xhrd)\n" if timedout > 1 raise PermError, "Too many timeouts! (get_xhrd)\n" if timedout > 1
reconnect(server) reconnect(server)
get_group_info(server) get_group_info(server)
retry retry
@ -264,7 +267,7 @@ def get_body(server, message)
rescue TimeoutError rescue TimeoutError
print "Time out, reconnecting to server\n" print "Time out, reconnecting to server\n"
timedout += 1 timedout += 1
raise TimeoutError, "Too many timeouts! (get_body)\n" if timedout > 1 raise PermError, "Too many timeouts! (get_body)\n" if timedout > 1
reconnect(server) reconnect(server)
get_group_info(server) get_group_info(server)
retry retry
@ -293,7 +296,7 @@ def get_group_body(subj)
i += 1 i += 1
retry retry
else else
raise BodyError, "Message-id not on another server\n" raise TempError, "Message-id not on another server\n"
end end
end end
end end
@ -324,7 +327,7 @@ def get_group_body_first(subj)
i += 1 i += 1
retry retry
else else
raise BodyError, "Message-id not on another server\n" raise TempError, "Message-id not on another server\n"
end end
end end
end end
@ -354,7 +357,7 @@ def get_group_body_rest(subj, file=nil)
i += 1 i += 1
retry retry
else else
raise BodyError, "Message-id not on another server\n" raise TempError, "Message-id not on another server\n"
end end
end end
end end