Nat*_*owe 137 exception typescript
我正在使用TypeScript进行一个相当大的项目,我想知道使用Error
s 的标准是什么.例如,假设我在Java中处理了一个超出范围的索引:
throw new IndexOutOfBoundsException();
Run Code Online (Sandbox Code Playgroud)
TypeScript中的等效语句是:
throw new Error("Index Out of Bounds");
Run Code Online (Sandbox Code Playgroud)
我可以通过其他方式实现这一目标?什么是公认的标准?
Nat*_*owe 149
有人在评论中将此链接发布到MDN,我认为这非常有帮助.它非常彻底地描述了ErrorTypes之类的东西.
EvalError ---创建一个表示有关全局函数eval()的错误的实例.
InternalError ---创建一个实例,表示在引发JavaScript引擎中的内部错误时发生的错误.例如"过多的递归".
RangeError ---创建一个实例,表示当数字变量或参数超出其有效范围时发生的错误.
ReferenceError ---创建一个实例,表示取消引用无效引用时发生的错误.
SyntaxError ---创建一个实例,表示在解析eval()中的代码时发生的语法错误.
TypeError ---创建一个实例,表示当变量或参数不是有效类型时发生的错误.
URIError ---创建一个实例,表示在encodeURI()或decodeURI()传递无效参数时发生的错误.
bas*_*rat 56
JavaScript中超出范围的约定正在使用RangeError
.要检查类型,请使用if/else + instanceof
从最具通用性开始
try {
throw new RangeError();
}
catch (e){
if(e instanceof RangeError){
console.log('out of range');
}
}
Run Code Online (Sandbox Code Playgroud)
Mac*_*ora 38
通过Exception发出和显示消息的简单解决方案.
try {
throw new TypeError("Error message");
}
catch (e){
console.log((<Error>e).message);//conversion to Error type
}
Run Code Online (Sandbox Code Playgroud)
Mor*_*rty 15
不要忘记switch语句:
default
.instanceof
可以匹配超类.constructor
将匹配确切的类.function handleError() {
try {
throw new RangeError();
}
catch (e) {
switch (e.constructor) {
case Error: return console.log('generic');
case RangeError: return console.log('range');
default: return console.log('unknown');
}
}
}
handleError();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
138591 次 |
最近记录: |