我应该总是将代码包装在Jatch的Try Catch块中吗?

前端之家收集整理的这篇文章主要介绍了我应该总是将代码包装在Jatch的Try Catch块中吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我已经忽略了异常处理足够长的时间,主要是因为我从来没有看到它在我看到的片段中使用过,2年写javascript而且我甚至不知道javascript有异常处理.其他语言很常见,看到异常处理,异常处理对javascript不太重要吗?什么是一些典型的场景,应该总是在javascript中使用异常处理而不应该?

此规则是否也适用于javascript?

Why should I not wrap every block in “try”-“catch”?

最佳答案
javascript中最常见的策略是防御性地编写并彻底测试.

例如有些库从第一个方块开始,测试类似于:

var element;

if (document && document.getElementById) {
  element = document.getElementById('foo');
}

if (element) {
  // use element
}    

但是使用isHostMethod等测试以更通用的格式编写.

使用try..catch仅作为功能检测或其他防御措施不可用的最后手段.测试宿主对象有时会返回无用的结果,甚至可能会抛出错误(例如,所有XMLHttpRequest脚本都使用try..catch,因为在IE中测试支持是不确定的,因此唯一的选择就是调用它并看看会发生什么).

由于大多数浏览器默认情况下不会显示它们,因此轻微的脚本错误不是很大的问题.大多数非平凡页面总是会抛出错误(包括SO),具体取决于浏览器,设置和用户的网络环境等.用户被拒绝了他们可能或可能不知道他们丢失的功能(并且实际上可能从中受益).因此,典型的策略是使我们的页面在没有任何脚本的情况下起作用,然后添加脚本功能以增强可用性.这样,如果发生可能会阻止页面有用的错误,则始终会回退基本功能.

这种策略可能并非总是可行,但这是一个很好的起点,不应轻易放弃.

猜你在找的JavaScript相关文章