You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/server/lib/errors.ts

46 lines
1.2 KiB
TypeScript

import ExtendableError from 'es6-error';
class TcError extends ExtendableError {
public code: number;
public type: string;
public data: any;
public retryable: boolean;
constructor(message?: string, code?: number, type?: string, data?: unknown) {
super(message ?? '服务器出错');
this.code = code ?? this.code ?? 500;
this.type = type ?? this.type;
this.data = data ?? this.data;
this.retryable = this.retryable ?? false;
}
}
export class DataNotFoundError extends TcError {
constructor(message?: string, code?: number, type?: string, data?: unknown) {
super(message ?? '找不到数据', code ?? 404, type, data);
}
}
export class EntityError extends TcError {
constructor(
message?: string,
code?: number,
type?: string,
data?: { field: string; message: string }[]
) {
super(message ?? '表单不正确', code ?? 442, type, data);
}
}
export class NoPermissionError extends TcError {
constructor(message?: string, code?: number, type?: string, data?: unknown) {
super(message ?? '没有操作权限', code ?? 403, type, data);
}
}
export class ServiceUnavailableError extends TcError {
constructor(data?: unknown) {
super('Service unavailable', 503, 'SERVICE_NOT_AVAILABLE', data);
}
}