2020-01-02 15:13:47 -05:00
|
|
|
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
2018-08-15 23:36:48 -04:00
|
|
|
|
2018-10-14 16:29:50 -04:00
|
|
|
/** A Deno specific error. The `kind` property is set to a specific error code
|
|
|
|
* which can be used to in application logic.
|
|
|
|
*
|
2019-02-12 10:08:56 -05:00
|
|
|
* try {
|
|
|
|
* somethingThatMightThrow();
|
|
|
|
* } catch (e) {
|
|
|
|
* if (
|
|
|
|
* e instanceof Deno.DenoError &&
|
|
|
|
* e.kind === Deno.ErrorKind.Overflow
|
|
|
|
* ) {
|
|
|
|
* console.error("Overflow error!");
|
|
|
|
* }
|
2018-10-14 16:29:50 -04:00
|
|
|
* }
|
2019-02-12 10:08:56 -05:00
|
|
|
*
|
2018-10-14 16:29:50 -04:00
|
|
|
*/
|
2018-10-07 19:33:30 -04:00
|
|
|
export class DenoError<T extends ErrorKind> extends Error {
|
|
|
|
constructor(readonly kind: T, msg: string) {
|
|
|
|
super(msg);
|
|
|
|
this.name = ErrorKind[kind];
|
2018-08-15 23:36:48 -04:00
|
|
|
}
|
|
|
|
}
|
2019-08-26 17:02:34 -04:00
|
|
|
|
|
|
|
// Warning! The values in this enum are duplicated in cli/msg.rs
|
|
|
|
// Update carefully!
|
|
|
|
export enum ErrorKind {
|
|
|
|
NoError = 0,
|
|
|
|
NotFound = 1,
|
|
|
|
PermissionDenied = 2,
|
|
|
|
ConnectionRefused = 3,
|
|
|
|
ConnectionReset = 4,
|
|
|
|
ConnectionAborted = 5,
|
|
|
|
NotConnected = 6,
|
|
|
|
AddrInUse = 7,
|
|
|
|
AddrNotAvailable = 8,
|
|
|
|
BrokenPipe = 9,
|
|
|
|
AlreadyExists = 10,
|
|
|
|
WouldBlock = 11,
|
|
|
|
InvalidInput = 12,
|
|
|
|
InvalidData = 13,
|
|
|
|
TimedOut = 14,
|
|
|
|
Interrupted = 15,
|
|
|
|
WriteZero = 16,
|
|
|
|
Other = 17,
|
|
|
|
UnexpectedEof = 18,
|
|
|
|
BadResource = 19,
|
|
|
|
CommandFailed = 20,
|
|
|
|
EmptyHost = 21,
|
|
|
|
IdnaError = 22,
|
|
|
|
InvalidPort = 23,
|
|
|
|
InvalidIpv4Address = 24,
|
|
|
|
InvalidIpv6Address = 25,
|
|
|
|
InvalidDomainCharacter = 26,
|
|
|
|
RelativeUrlWithoutBase = 27,
|
|
|
|
RelativeUrlWithCannotBeABaseBase = 28,
|
|
|
|
SetHostOnCannotBeABaseUrl = 29,
|
|
|
|
Overflow = 30,
|
|
|
|
HttpUser = 31,
|
|
|
|
HttpClosed = 32,
|
|
|
|
HttpCanceled = 33,
|
|
|
|
HttpParse = 34,
|
|
|
|
HttpOther = 35,
|
|
|
|
TooLarge = 36,
|
|
|
|
InvalidUri = 37,
|
|
|
|
InvalidSeekMode = 38,
|
|
|
|
OpNotAvailable = 39,
|
|
|
|
WorkerInitFailed = 40,
|
|
|
|
UnixError = 41,
|
|
|
|
NoAsyncSupport = 42,
|
|
|
|
NoSyncSupport = 43,
|
|
|
|
ImportMapError = 44,
|
|
|
|
InvalidPath = 45,
|
|
|
|
ImportPrefixMissing = 46,
|
|
|
|
UnsupportedFetchScheme = 47,
|
|
|
|
TooManyRedirects = 48,
|
|
|
|
Diagnostic = 49,
|
2019-10-27 11:22:53 -04:00
|
|
|
JSError = 50,
|
2019-10-28 12:41:36 -04:00
|
|
|
TypeError = 51,
|
|
|
|
|
|
|
|
/** TODO this is a DomException type, and should be moved out of here when possible */
|
|
|
|
DataCloneError = 52
|
2019-08-26 17:02:34 -04:00
|
|
|
}
|