Files
ROC/library/app_env/src/error/shared_error.e
Jocelyn Fiat 6ff7a6493c Simplify CMS_SERVICE initialization, and CMS server (launcher).
Renamed "layout" lib as "app_env" with APPLICATION_ENVIRONMENT interface.
  applied changed to callers.
Added CMS_THEME.has_region (a_name): BOOLEAN to know if a region is declared in a defined theme.
2015-04-29 23:01:42 +02:00

109 lines
2.8 KiB
Plaintext

note
description: "Provides error information"
date: "$Date: 2014-08-20 15:21:15 -0300 (mi., 20 ago. 2014) $"
revision: "$Revision: 95678 $"
class
SHARED_ERROR
inherit
SHARED_LOGGER
feature -- Access
last_error: detachable BASIC_ERROR_HANDLER
-- Object represent last error.
last_error_message: READABLE_STRING_32
-- Last error string representation.
do
if attached last_error as ll_error then
Result := ll_error.error_message
else
Result := ""
end
end
feature -- Status Report
successful: BOOLEAN
-- Was last operation successful?
-- If not, `last_error' must be set.
feature -- Element Settings
set_last_error_from_exception (a_location: STRING)
-- Initialize instance from last exception.
-- Don't show too much internal details (e.g. stack trace).
-- We really don't want this to fail since it is called from rescue clauses.
require
attached_location: a_location /= Void
local
l_exceptions: EXCEPTIONS
l_message: STRING
l_tag: detachable STRING
l_retried: BOOLEAN
do
if not l_retried then
create l_exceptions
create l_message.make (256)
l_tag := l_exceptions.tag_name
if l_tag /= Void then
l_message.append ("The following exception was raised: ")
l_message.append (l_tag)
else
l_message.append ("An unknown exception was raised.")
end
set_last_error (l_message, a_location)
write_critical_log (generator + ".set_last_error_from_exception " + l_message)
else
set_last_error ("Generic error", "")
write_critical_log (generator + ".set_last_error_from_exception Generic Error")
end
rescue
l_retried := True
retry
end
set_last_error (a_message, a_location: STRING)
-- Set `last_error_message' with `a_message',
-- `last_error_location' with `a_location' and
-- `successful' to `False'.
require
attached_message: a_message /= Void
attached_location: a_location /= Void
do
create last_error.make (a_message, a_location)
write_critical_log (generator + ".set_last_error " + a_message)
successful := False
ensure
last_error_set: attached last_error
failed: not successful
end
set_last_error_from_handler (a_error: detachable BASIC_ERROR_HANDLER)
-- Set `last_error' with `a_error'.
do
last_error := a_error
successful := False
ensure
last_error_set: attached last_error
failed: not successful
end
set_successful
-- Reset `last_error_message' and `last_error_location' and
-- set `successful' to `True'.
do
last_error := Void
successful := True
ensure
last_error__reset: last_error = Void
successful: successful
end
note
copyright: "2011-2015, Javier Velilla, Jocelyn Fiat, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
end