js中try catch的执行

<scripttype="text/javascript">varcallback=function(tag){console.log(tag+"callbackhasb... <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的一致吗?
展开
 我来答
匿名用户
2014-03-17
展开全部
  1. 如果抛出错误了,你就不知道a=NaN了,抛出异常和返回NaN两者只能选一个,js选择了后者

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

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

e晴天nl

2014-03-17 · TA获得超过242个赞
知道小有建树答主
回答量:592
采纳率:57%
帮助的人:49万
展开全部
parseInt解析的过程是从参数str的第一个字符开始解析,如果为非数字,返回NaN;如果为数字,继续解析,直到遇到非数字或解析完,并返回解析的数字。返回NaN并没有出错,不出错当然调用try中回调函数,如果出错,就调用catch里面的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yugi111
推荐于2018-05-13 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
try {
    var a = parseInt("A12B");
    if (isNaN(a) || !isFinite(a)) {
        throw new Error(a + " is NaN or Not Finite !");
    }
} catch (e) {
    console.error(e);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式