Vik*_*kas 4 javascript exception-handling exception
这次我没有任何问题但只是为了好奇我想知道JavaScript中有多少例外.
例如,我使用以下代码:
<script type="text/javascript">
var x;
try{
x = 1 / 0;
alert(x); // output: Infinity. FYI: JavaScript has Infinity property and it's value is 1.7976931348623157E+10308
alert(funCreate());
}
catch(obj)
{
alert(obj.fileName);
alert(obj.lineNumber);
alert(obj.message); // output: funCreate is not defined
alert(obj.name); // output: ReferenceError
alert(obj.stack);
};
</script>
Run Code Online (Sandbox Code Playgroud)
这里,ReferenceError就像一个异常类型.因此,如果它被视为异常类型,那么我们可以按类型处理异常吗?就像我们都用其他编程语言一样.看到链接.
谢谢...
And*_*rew 13
我相信JS中有六种异常类型:
EvalError(由错误产生的错误eval();RangeError (当使用超出其使用范围的数字时产生 - 我实际上从未在现实生活中见过这个,我现在似乎无法生产它);ReferenceError (在尝试按名称访问对象的不存在成员时生成);SyntaxError;TypeError(当一种方法期望一种不同类型的值时); 和URIError (在尝试创建或解码URI时生成). 不幸的是,问题在于普遍不支持这些异常类型 - 两个大的缺点是Safari和Opera.同时,你会发现,lineNumber与fileName只在Firefox浏览器(也许其他人?),你拿回字符串message会有所不同,从浏览器到浏览器.因此在实践中,最好避免使用这些并手动和更直接地管理异常处理.
javascript中没有这样的语法,但你可以轻松实现类似的事情:
var x;
try{
x = 1 / 0;
alert(x); // output: Infinity. FYI: JavaScript has Infinity property and it's value is 1.7976931348623157E+10308
alert(funCreate());
}
catch(obj)
{
switch(obj.name) {
case 'ReferenceError':
alert(obj.fileName);
alert(obj.lineNumber);
alert(obj.message); // output: funCreate is not defined
alert(obj.name); // output: ReferenceError
alert(obj.stack);
break;
case 'AnotherError':
//do other things
break;
default:
//other stuff
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6772 次 |
| 最近记录: |