Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Improve error handling capabilities for single-threaded applications #89

Merged
merged 2 commits into from Jan 18, 2013
Jump to file or symbol
Failed to load files and symbols.
+13 −2
Split
View
@@ -136,4 +136,13 @@ class InvalidCommand < ConnectionLevelException
class UnexpectedFrame < ConnectionLevelException
end
+
+ class NetworkErrorWrapper < StandardError
+ attr_reader :other
+
+ def initialize(other)
+ super(other.message)
+ @other = other
+ end
+ end
end
View
@@ -263,7 +263,7 @@ def handle_frame(ch_number, method)
@event_loop = nil
@transport.close
- rescue Exception => e
+ rescue StandardError => e
puts e.class.name
puts e.message
puts e.backtrace
@@ -309,6 +309,8 @@ def handle_frameset(ch_number, frames)
end
def handle_network_failure(exception)
+ raise NetworkErrorWrapper.new(exception) unless @threaded
+
if !recovering_from_network_failure?
@recovering_from_network_failure = true
if recoverable_network_failure?(exception)
View
@@ -175,7 +175,7 @@ def initialize_socket
@socket.post_connection_check(host) if @verify_ssl
@socket
end
- rescue Exception => e
+ rescue StandardError, ConnectionTimeout => e
@status = :not_connected
raise Bunny::TCPConnectionFailed.new(e, self.hostname, self.port)
end