为了账号安全,请及时绑定邮箱和手机立即绑定

有一点不是很理解关于try...catch

明明前边用if判断就可以把是否为元素类型判断出来了,就算是自己写的a={nodeType:1}页可以正确判断了,为什么不直接写else{return false};而是还要写try catch 语句呢。

 

正在回答

2 回答

因为如果 代码出错,整个程序就会停止,他代码放到try里  能正确执行就会正确执行,如果报错就会进入catch里面,代码还是会向后执行。不会影响整个程序。如果直接放到if里的话  if里的代码报错就算结束了  else里的return false是不会执行的。

1 回复 有任何疑惑可以回复我~
#1

糖果罐 提问者

回复字数不能太多,看我下边下一个回答吧
2015-12-17 回复 有任何疑惑可以回复我~

function isElement(obj){

  if(obj&&obj.nodeType===1){

  if(window.Node&&obj instanceof Node){

  return true;

  }

  try{

  testDiv.appendChild(obj);

  testDiv.removeChild(obj);

  }

  catch(e){

  return false;

  }

  return true;

  }

  return false;

  }

额,可能我没有表述清楚,比如上例中,我觉得try catch 根本就没有必要,直接改成else{return false;}

就各种情况都能判断了呀。

0 回复 有任何疑惑可以回复我~
#1

李晓健

他视频里说清楚了为什么要加 testDiv.appendChild(obj); testDiv.removeChild(obj); 这两行代码了。try catch就是为了防止这两行报错
2015-12-17 回复 有任何疑惑可以回复我~
#2

糖果罐 提问者 回复 李晓健

奥,我又看了一遍,说是可能是外部的元素,所以不能直接用else,开始时可能没注意,谢谢了
2015-12-17 回复 有任何疑惑可以回复我~
#3

李晓健 回复 糖果罐 提问者

没有其他问题 就把这个问题关掉吧
2015-12-17 回复 有任何疑惑可以回复我~
#4

糖果罐 提问者 回复 李晓健

额,怎么关掉
2015-12-17 回复 有任何疑惑可以回复我~
#5

李晓健 回复 糖果罐 提问者

采纳答案
2015-12-17 回复 有任何疑惑可以回复我~
#6

糖果罐 提问者 回复 李晓健

恩,好的
2015-12-17 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消

有一点不是很理解关于try...catch

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信