def handle_exception(e)
if e.respond_to?(:error_handler_before)
fcall(e, :error_handler_before, self)
end
if e.respond_to?(:error_handler_instead)
fcall(e, :error_handler_instead, self)
else
if e.respond_to?(:status)
exit_status(( e.status ))
end
if Softspoken === e or SystemExit === e
quiet = ((SystemExit === e and e.message.respond_to?('abort')) or
(SystemExit === e and e.message == 'exit'))
stderr.puts e.message unless quiet
else
fatal{ e }
end
end
if e.respond_to?(:error_handler_after)
fcall(e, :error_handler_after, self)
end
exit_status(( exit_failure )) if exit_status == exit_success
exit_status(( Util.integer(exit_status) rescue(exit_status ? 0 : 1) ))
end