// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for details.
export enum InternalErrorLevel {
Error,
Warning,
}
export class InternalError extends Error {
public errorCode: number;
public errorLevel: InternalErrorLevel;
public get isInternalError(): boolean {
return true;
}
constructor(
errorCode: number,
message: string,
errorLevel: InternalErrorLevel = InternalErrorLevel.Error,
) {
super(message);
this.errorCode = errorCode;
this.errorLevel = errorLevel;
this.message = errorCode > 0 ? message + ` (error code ${this.errorCode})` : message;
}
}
export class NestedError extends InternalError {
public innerError: Error | any; // Normally this should be an error, but we support any value
private _extras: any;
constructor(
errorCode: number,
message: string,
innerError: any = null,
extras?: any,
errorLevel: InternalErrorLevel = InternalErrorLevel.Error,
) {
super(errorCode, message, errorLevel);
this.innerError = innerError;
this.name = innerError ? innerError.name : null;
const innerMessage = innerError ? innerError.message : null;
this.message = innerMessage ? `${message}: ${innerMessage}` : message;
this._extras = extras;
}
public get extras(): any {
return this._extras;
}
public static getWrappedError(error: InternalError, innerError: any): NestedError {
return new NestedError(innerError.errorCode || error.errorCode, error.message, innerError);
}
}microsoft/vscode-react-native
Publicmirrored fromhttps://github.com/microsoft/vscode-react-nativeAvailable
src/common/error/internalError.ts
55lines · modepreview