Skip to content

Commit 8f5a875

Browse files
committed
Add error types on frontend
1 parent 48ae563 commit 8f5a875

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

src/frontend/apis/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Promise from 'bluebird';
22
import axios from 'axios';
3+
import { RuntimeError } from '/common/error';
34

45
axios.interceptors.response.use(
56
response => response.data,
@@ -73,7 +74,7 @@ const TracerApi = {
7374
if (jsWorker) jsWorker.terminate();
7475
jsWorker = new Worker('/api/tracers/js');
7576
jsWorker.onmessage = e => resolve(e.data);
76-
jsWorker.onerror = reject;
77+
jsWorker.onerror = e => reject(new RuntimeError(e.message));
7778
jsWorker.postMessage(code);
7879
}),
7980
java: POST('/tracers/java'),

src/frontend/common/error.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class ApplicationError extends Error {
2+
constructor(message) {
3+
super(message);
4+
this.name = this.constructor.name;
5+
}
6+
}
7+
8+
class CompileError extends ApplicationError {
9+
}
10+
11+
class RuntimeError extends ApplicationError {
12+
}
13+
14+
export {
15+
ApplicationError,
16+
CompileError,
17+
RuntimeError,
18+
};

src/frontend/core/tracerManager.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { extension } from '/common/util';
44
import { Array1DData, Array2DData, ChartData, Data, GraphData, LogData } from '/core/datas';
55
import { Array1DRenderer, Array2DRenderer, ChartRenderer, GraphRenderer, LogRenderer, Renderer } from '/core/renderers';
66
import { TracerApi } from '/apis';
7+
import { CompileError } from '/common/error';
78

89
class TracerManager {
910
constructor() {
@@ -158,7 +159,7 @@ class TracerManager {
158159
if (ext in TracerApi) {
159160
return TracerApi[ext]({ code: content });
160161
} else {
161-
return Promise.reject(new Error('Language Not Supported'));
162+
return Promise.reject(new CompileError('Language Not Supported'));
162163
}
163164
}
164165

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy