Catch emulation errors

This commit is contained in:
momo5502
2025-07-09 08:39:31 +02:00
parent 7ef54d46bb
commit 7bf7c2f388

View File

@@ -80,6 +80,7 @@ export class Emulator {
/*new URL('./emulator-worker.js', import.meta.url)*/ "./emulator-worker.js", /*new URL('./emulator-worker.js', import.meta.url)*/ "./emulator-worker.js",
); );
this.worker.onerror = this._onError.bind(this);
this.worker.onmessage = this._onMessage.bind(this); this.worker.onmessage = this._onMessage.bind(this);
} }
@@ -152,6 +153,20 @@ export class Emulator {
this.updateState(); this.updateState();
} }
logError(message: string) {
this.logHandler([`<span class="terminal-red">${message}</span>`]);
}
_onError(ev: ErrorEvent) {
try {
this.worker.terminate();
} catch (e) {}
this.logError(`Emulator encountered fatal error: ${ev.message}`);
this._setState(EmulationState.Failed);
this.terminateResolve(-1);
}
_onMessage(event: MessageEvent) { _onMessage(event: MessageEvent) {
if (event.data.message == "log") { if (event.data.message == "log") {
this.logHandler(event.data.data); this.logHandler(event.data.data);