Chapter 3: ACEHS
Activerse reports many runtime problems through the Activerse Concurrent Error Handling System
(ACEHS). Messages are built by ActiverseUtils.ErrorLogger and printed while the
session can keep running. Fatal start-up failures still stop the instance.
Java errors vs ACEHS
- Compile / syntax — missing semicolons, unknown types. Fix from the compiler; ACEHS does not run yet.
- Runtime — invalid paths, null images after load, inventory mistakes. ACEHS often reports these without a full crash.
- Logic — the game runs but does the wrong thing. Use the debug overlay (Chapter 2) and your own checks.
Message format
ErrorLogger.format produces:
FILE.TYPE:(LN: methodSignature - ACEHS Error thrown; message)
FILE.TYPE-CONNTO-OTHER.TYPE:(LN: methodSignature - ACEHS Error thrown; message)
| Token | Meaning |
|---|---|
IN |
Input / load problem (bad path, missing file, invalid property). |
OUT |
Output / state problem (null image at draw time, full inventory). |
IO |
Broader I/O or environment failure (windowing, properties missing). |
LN |
Location: the method name passed into the logger, not a source line number. |
CONNTO |
A second file/type that is implicated (for example Actor drawing through ActiverseImage). |
DEV |
Reserved for “this should not happen” engine faults. |
File codes — ActiverseEngine (A)
| Code | Class |
|---|---|
1A | Activerse.java |
2A | ActiverseImage.java |
3A | ActiverseMouseInfo.java |
4A | ActiverseSound.java |
5A | Actor.java |
6A | CollisionManager.java |
7A | GameLoop.java |
8A | KeyboardInfo.java |
9A | MemoryTracker.java |
10A | World.java |
11A | Item.java |
12A | Camera.java |
13A | ConfigPuller.java |
PROP | Activerse.properties (via ConfigPuller) |
Live reports already use 1A, 2A, 4A, 5A,
9A, 10A, and PROP. The rest are the wiki map for those classes
when you extend the engine.
File codes — ActiverseUtils (B)
| Code | Class |
|---|---|
1B | ActorVector.java |
2B | FileUtils.java |
3B | PerlinNoise.java |
4B | Physics.java |
5B | Timer.java |
6B | WorldGeneration.java |
7B | ResourcePaths.java |
8B | ErrorLogger.java |
9B | DelayScheduler.java |
10B | DaemonExecutors.java |
11B | PanelPainter.java |
12B | TextRenderUtils.java |
13B / WM | WorldManager.java (runtime reports use WM) |
14B | WorldKeys.java |
15B | Shaper.java |
16B | TextLabel.java |
17B | UIBar.java |
18B | ParticleSystem.java |
19B | MathUtils.java |
20B | ImageUtils.java |
21B | ColorUtils.java |
22B | JsonUtils.java |
23B | IniUtils.java |
Worked example
10A.IN-CONNTO-2A.OUT:(LN: drawDebugInfo() - ACEHS Error thrown; an image file is missing from the classpath: player.png. Please ensure the image exists in the resources directory.)
Read the human message first: the image is not on the classpath. 10A.IN means
World failed to find an input. CONNTO-2A.OUT points at
ActiverseImage. LN: drawDebugInfo() is the method that reported it.
Another common pattern from inventory:
5A.OUT-CONNTO-2A.OUT:(LN: addItem(Item item) - ACEHS Error thrown; inventory is full.)
Call enableInventory() before adding items, and keep the list under the max size.
Missing properties load as:
PROP.IN.OUT.IO:(LN: loadProperties() - ACEHS Error thrown; Activerse.properties not found. Using defaults.)
The engine continues with built-in defaults.