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)