提交 8f5a875a 编写于 作者: J Jason Park

Add error types on frontend

上级 48ae5636
import Promise from 'bluebird'; import Promise from 'bluebird';
import axios from 'axios'; import axios from 'axios';
import { RuntimeError } from '/common/error';
axios.interceptors.response.use( axios.interceptors.response.use(
response => response.data, response => response.data,
...@@ -73,7 +74,7 @@ const TracerApi = { ...@@ -73,7 +74,7 @@ const TracerApi = {
if (jsWorker) jsWorker.terminate(); if (jsWorker) jsWorker.terminate();
jsWorker = new Worker('/api/tracers/js'); jsWorker = new Worker('/api/tracers/js');
jsWorker.onmessage = e => resolve(e.data); jsWorker.onmessage = e => resolve(e.data);
jsWorker.onerror = reject; jsWorker.onerror = e => reject(new RuntimeError(e.message));
jsWorker.postMessage(code); jsWorker.postMessage(code);
}), }),
java: POST('/tracers/java'), java: POST('/tracers/java'),
......
class ApplicationError extends Error {
constructor(message) {
super(message);
this.name = this.constructor.name;
}
}
class CompileError extends ApplicationError {
}
class RuntimeError extends ApplicationError {
}
export {
ApplicationError,
CompileError,
RuntimeError,
};
\ No newline at end of file
...@@ -4,6 +4,7 @@ import { extension } from '/common/util'; ...@@ -4,6 +4,7 @@ import { extension } from '/common/util';
import { Array1DData, Array2DData, ChartData, Data, GraphData, LogData } from '/core/datas'; import { Array1DData, Array2DData, ChartData, Data, GraphData, LogData } from '/core/datas';
import { Array1DRenderer, Array2DRenderer, ChartRenderer, GraphRenderer, LogRenderer, Renderer } from '/core/renderers'; import { Array1DRenderer, Array2DRenderer, ChartRenderer, GraphRenderer, LogRenderer, Renderer } from '/core/renderers';
import { TracerApi } from '/apis'; import { TracerApi } from '/apis';
import { CompileError } from '/common/error';
class TracerManager { class TracerManager {
constructor() { constructor() {
...@@ -158,7 +159,7 @@ class TracerManager { ...@@ -158,7 +159,7 @@ class TracerManager {
if (ext in TracerApi) { if (ext in TracerApi) {
return TracerApi[ext]({ code: content }); return TracerApi[ext]({ code: content });
} else { } else {
return Promise.reject(new Error('Language Not Supported')); return Promise.reject(new CompileError('Language Not Supported'));
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册