Skip to content

Implementation of Exception and Error Management System #90

@BenCheung0422

Description

@BenCheung0422

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

No one assigned

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions