mirror of
https://github.com/denoland/deno.git
synced 2024-11-01 09:24:20 -04:00
1f9d158bdc
Flattens dispatch error handling to produce one less useless stack frame on op errors.
201 lines
4.4 KiB
TypeScript
201 lines
4.4 KiB
TypeScript
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
|
|
|
// Warning! The values in this enum are duplicated in cli/op_error.rs
|
|
// Update carefully!
|
|
export enum ErrorKind {
|
|
NotFound = 1,
|
|
PermissionDenied = 2,
|
|
ConnectionRefused = 3,
|
|
ConnectionReset = 4,
|
|
ConnectionAborted = 5,
|
|
NotConnected = 6,
|
|
AddrInUse = 7,
|
|
AddrNotAvailable = 8,
|
|
BrokenPipe = 9,
|
|
AlreadyExists = 10,
|
|
InvalidData = 13,
|
|
TimedOut = 14,
|
|
Interrupted = 15,
|
|
WriteZero = 16,
|
|
UnexpectedEof = 17,
|
|
BadResource = 18,
|
|
Http = 19,
|
|
URIError = 20,
|
|
TypeError = 21,
|
|
Other = 22
|
|
}
|
|
|
|
export function getErrorClass(kind: ErrorKind): { new (msg: string): Error } {
|
|
switch (kind) {
|
|
case ErrorKind.TypeError:
|
|
return TypeError;
|
|
case ErrorKind.Other:
|
|
return Error;
|
|
case ErrorKind.URIError:
|
|
return URIError;
|
|
case ErrorKind.NotFound:
|
|
return NotFound;
|
|
case ErrorKind.PermissionDenied:
|
|
return PermissionDenied;
|
|
case ErrorKind.ConnectionRefused:
|
|
return ConnectionRefused;
|
|
case ErrorKind.ConnectionReset:
|
|
return ConnectionReset;
|
|
case ErrorKind.ConnectionAborted:
|
|
return ConnectionAborted;
|
|
case ErrorKind.NotConnected:
|
|
return NotConnected;
|
|
case ErrorKind.AddrInUse:
|
|
return AddrInUse;
|
|
case ErrorKind.AddrNotAvailable:
|
|
return AddrNotAvailable;
|
|
case ErrorKind.BrokenPipe:
|
|
return BrokenPipe;
|
|
case ErrorKind.AlreadyExists:
|
|
return AlreadyExists;
|
|
case ErrorKind.InvalidData:
|
|
return InvalidData;
|
|
case ErrorKind.TimedOut:
|
|
return TimedOut;
|
|
case ErrorKind.Interrupted:
|
|
return Interrupted;
|
|
case ErrorKind.WriteZero:
|
|
return WriteZero;
|
|
case ErrorKind.UnexpectedEof:
|
|
return UnexpectedEof;
|
|
case ErrorKind.BadResource:
|
|
return BadResource;
|
|
case ErrorKind.Http:
|
|
return Http;
|
|
}
|
|
}
|
|
|
|
class NotFound extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "NotFound";
|
|
}
|
|
}
|
|
class PermissionDenied extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "PermissionDenied";
|
|
}
|
|
}
|
|
class ConnectionRefused extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "ConnectionRefused";
|
|
}
|
|
}
|
|
class ConnectionReset extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "ConnectionReset";
|
|
}
|
|
}
|
|
class ConnectionAborted extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "ConnectionAborted";
|
|
}
|
|
}
|
|
class NotConnected extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "NotConnected";
|
|
}
|
|
}
|
|
class AddrInUse extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "AddrInUse";
|
|
}
|
|
}
|
|
class AddrNotAvailable extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "AddrNotAvailable";
|
|
}
|
|
}
|
|
class BrokenPipe extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "BrokenPipe";
|
|
}
|
|
}
|
|
class AlreadyExists extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "AlreadyExists";
|
|
}
|
|
}
|
|
class InvalidData extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "InvalidData";
|
|
}
|
|
}
|
|
class TimedOut extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "TimedOut";
|
|
}
|
|
}
|
|
class Interrupted extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "Interrupted";
|
|
}
|
|
}
|
|
class WriteZero extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "WriteZero";
|
|
}
|
|
}
|
|
class Other extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "Other";
|
|
}
|
|
}
|
|
class UnexpectedEof extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "UnexpectedEof";
|
|
}
|
|
}
|
|
class BadResource extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "BadResource";
|
|
}
|
|
}
|
|
class Http extends Error {
|
|
constructor(msg: string) {
|
|
super(msg);
|
|
this.name = "Http";
|
|
}
|
|
}
|
|
|
|
export const errors = {
|
|
NotFound: NotFound,
|
|
PermissionDenied: PermissionDenied,
|
|
ConnectionRefused: ConnectionRefused,
|
|
ConnectionReset: ConnectionReset,
|
|
ConnectionAborted: ConnectionAborted,
|
|
NotConnected: NotConnected,
|
|
AddrInUse: AddrInUse,
|
|
AddrNotAvailable: AddrNotAvailable,
|
|
BrokenPipe: BrokenPipe,
|
|
AlreadyExists: AlreadyExists,
|
|
InvalidData: InvalidData,
|
|
TimedOut: TimedOut,
|
|
Interrupted: Interrupted,
|
|
WriteZero: WriteZero,
|
|
Other: Other,
|
|
UnexpectedEof: UnexpectedEof,
|
|
BadResource: BadResource,
|
|
Http: Http
|
|
};
|