user_friendly_error.ts 624 字节
Newer Older
1 2 3 4 5
import { prettyJson, stackToArray, IDetailedError } from './common';

export class UserFriendlyError extends Error implements IDetailedError {
  originalError: Error;

6
  additionalInfo?: string;
7

8
  constructor(message: string, originalError: Error, additionalInfo?: string) {
9 10 11 12 13 14 15 16 17 18 19 20 21 22
    super(message);
    this.originalError = originalError;
    this.additionalInfo = additionalInfo;
  }

  get details(): string {
    return prettyJson({
      userMessage: this.message,
      errorMessage: this.originalError.message,
      stack: stackToArray(this.originalError.stack),
      additionalInfo: this.additionalInfo,
    });
  }
}