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

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
1AActiverse.java
2AActiverseImage.java
3AActiverseMouseInfo.java
4AActiverseSound.java
5AActor.java
6ACollisionManager.java
7AGameLoop.java
8AKeyboardInfo.java
9AMemoryTracker.java
10AWorld.java
11AItem.java
12ACamera.java
13AConfigPuller.java
PROPActiverse.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
1BActorVector.java
2BFileUtils.java
3BPerlinNoise.java
4BPhysics.java
5BTimer.java
6BWorldGeneration.java
7BResourcePaths.java
8BErrorLogger.java
9BDelayScheduler.java
10BDaemonExecutors.java
11BPanelPainter.java
12BTextRenderUtils.java
13B / WMWorldManager.java (runtime reports use WM)
14BWorldKeys.java
15BShaper.java
16BTextLabel.java
17BUIBar.java
18BParticleSystem.java
19BMathUtils.java
20BImageUtils.java
21BColorUtils.java
22BJsonUtils.java
23BIniUtils.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.