js中try catch的执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中try catch的执行相关的知识,希望对你有一定的参考价值。

<script type="text/javascript">
var callback = function(tag)
console.log(tag+" callback has been executed");

try

var a = parseInt("A12B");
callback("try");
catch(err)
callback("catch");

</script>
上面只是做一个测试,为什么parseInt解析出NaN也不抛出错误?还有如果try中某句出错,try中最后的callback函数会不会被调用,js中try catch的语法和java的一致吗?

    如果抛出错误了,你就不知道a=NaN了,抛出异常和返回NaN两者只能选一个,js选择了后者

    我想parseInt都返回NaN了,那它还能抛出什么异常?这里callback一定会被调用

    和java的用法相似但有差别,比如,catch(err/*这里必须要指定一个名字*/),没法像java那样在catch的()内按照异常类型类捕捉,但可以在catch(err)/*在这里根据err类型来区分,但似乎很少见到有这么用的*/

参考技术A parseInt解析的过程是从参数str的第一个字符开始解析,如果为非数字,返回NaN;如果为数字,继续解析,直到遇到非数字或解析完,并返回解析的数字。返回NaN并没有出错,不出错当然调用try中回调函数,如果出错,就调用catch里面的。 参考技术B try 
    var a = parseInt("A12B");
    if (isNaN(a) || !isFinite(a)) 
        throw new Error(a + " is NaN or Not Finite !");
    
 catch (e) 
    console.error(e);

本回答被提问者和网友采纳

以上是关于js中try catch的执行的主要内容,如果未能解决你的问题,请参考以下文章

JS try catch用法

JS的 try catch使用心得

JS---异常

js try catch 的使用,容错处理

求try catch语法

JavaScript里的try..catch和if...else有何区别啊