-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Supersedes #33
Refers EFP 7
Partly requires #9
Background
This project requires a fundamental system to manages Exceptions and Errors comprehensively. This issue should resolve this feature aligning EFP 7.
Details
In general, most should apply EFP 7, with the following features.
There would be a new abstract class Exception extending Throwable, all custom functions should only use the custom Exception class in the entire system. There would also be abstract Failure class extending Exception, abstract Error class extending Exception, abstract Fault class extending Error. Crashes would be handled by using factory functions emitting crashes and generating crash reports.
The default uncaught exception handler should be initialized as early as possible, ensuring any uncaught exceptions are properly handled and users receive relevant alerts.
General Error notifications can be made as application error notifications and general Exception notifications can be made as application warning notifications. All Exception events should all still be printed to logger depending on their levels. Note that not all error and warning notifications have to be pushed to application UI, since some resolvable Exceptions are unimportant to general users, though this might probably be configurable in preferences.
For crashing, there are Session Crash and Global Crash in the scope of TerraModulus game application. A Session Fault could be elevated to Global Fault leading to Global Crash, which generates a crash report immediately and terminates the application execution. The Launcher would detect the log message printed in standard error output indicating where the crash report has generated to, allowing the Launcher to alert the crash report immediately after the game crashes. If Session Crash occurs in a world gameplay, the world session is terminated, but the application still resumes with the session crash report shown on the screen; a crash report might not be generated on disk. All crash reports should include all the information about the session and the application, including the application version, platform version, hardware setup, states, etc. It should also make sure that no illegal manual modifications have been made to the application; errors involving unsupported/unintended operations would likely be disregarded.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status