microsoft/vscode-react-native
Publicmirrored from https://github.com/microsoft/vscode-react-nativeAvailable
src/common/error/internalError.ts
55lines · modeblame
17161993Meena Kunnathur Balakrishnan10 years ago | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. |
| 2 | // Licensed under the MIT license. See LICENSE file in the project root for details. | |
| 3 | | |
190e393cMeena Kunnathur Balakrishnan10 years ago | 4 | export enum InternalErrorLevel { |
| 5 | Error, | |
27710197Vladimir Kotikov8 years ago | 6 | Warning, |
190e393cMeena Kunnathur Balakrishnan10 years ago | 7 | } |
| 8 | | |
17161993Meena Kunnathur Balakrishnan10 years ago | 9 | export class InternalError extends Error { |
| 10 | public errorCode: number; | |
190e393cMeena Kunnathur Balakrishnan10 years ago | 11 | public errorLevel: InternalErrorLevel; |
| 12 | | |
| 13 | public get isInternalError(): boolean { | |
| 14 | return true; | |
| 15 | } | |
17161993Meena Kunnathur Balakrishnan10 years ago | 16 | |
34472878RedMickey5 years ago | 17 | constructor( |
| 18 | errorCode: number, | |
| 19 | message: string, | |
| 20 | errorLevel: InternalErrorLevel = InternalErrorLevel.Error, | |
| 21 | ) { | |
17161993Meena Kunnathur Balakrishnan10 years ago | 22 | super(message); |
| 23 | this.errorCode = errorCode; | |
190e393cMeena Kunnathur Balakrishnan10 years ago | 24 | this.errorLevel = errorLevel; |
09f6024fHeniker4 years ago | 25 | this.message = errorCode > 0 ? `${message} (error code ${this.errorCode})` : message; |
17161993Meena Kunnathur Balakrishnan10 years ago | 26 | } |
| 27 | } | |
| 28 | | |
| 29 | export class NestedError extends InternalError { | |
| 30 | public innerError: Error | any; // Normally this should be an error, but we support any value | |
898cb3c6Meena Kunnathur Balakrishnan10 years ago | 31 | private _extras: any; |
17161993Meena Kunnathur Balakrishnan10 years ago | 32 | |
34472878RedMickey5 years ago | 33 | constructor( |
| 34 | errorCode: number, | |
| 35 | message: string, | |
| 36 | innerError: any = null, | |
| 37 | extras?: any, | |
| 38 | errorLevel: InternalErrorLevel = InternalErrorLevel.Error, | |
| 39 | ) { | |
a4a7e387Meena Kunnathur Balakrishnan10 years ago | 40 | super(errorCode, message, errorLevel); |
17161993Meena Kunnathur Balakrishnan10 years ago | 41 | this.innerError = innerError; |
| 42 | this.name = innerError ? innerError.name : null; | |
| 43 | const innerMessage = innerError ? innerError.message : null; | |
09f6024fHeniker4 years ago | 44 | this.message = innerMessage ? `${message}: ${String(innerMessage)}` : message; |
898cb3c6Meena Kunnathur Balakrishnan10 years ago | 45 | this._extras = extras; |
| 46 | } | |
| 47 | | |
| 48 | public get extras(): any { | |
| 49 | return this._extras; | |
17161993Meena Kunnathur Balakrishnan10 years ago | 50 | } |
190e393cMeena Kunnathur Balakrishnan10 years ago | 51 | |
| 52 | public static getWrappedError(error: InternalError, innerError: any): NestedError { | |
2166bdabdigeff10 years ago | 53 | return new NestedError(innerError.errorCode || error.errorCode, error.message, innerError); |
190e393cMeena Kunnathur Balakrishnan10 years ago | 54 | } |
27710197Vladimir Kotikov8 years ago | 55 | } |