我已经忽略了异常处理足够长的时间,主要是因为我从来没有看到它在我看到的片段中使用过,2年写javascript而且我甚至不知道javascript有异常处理.其他语言很常见,看到异常处理,异常处理对javascript不太重要吗?什么是一些典型的场景,应该总是在javascript中使用异常处理而不应该?
此规则是否也适用于javascript?
最佳答案
javascript中最常见的策略是防御性地编写并彻底测试.
例如有些库从第一个方块开始,测试类似于:
var element;
if (document && document.getElementById) {
element = document.getElementById('foo');
}
if (element) {
// use element
}
但是使用isHostMethod等测试以更通用的格式编写.
使用try..catch仅作为功能检测或其他防御措施不可用的最后手段.测试宿主对象有时会返回无用的结果,甚至可能会抛出错误(例如,所有XMLHttpRequest脚本都使用try..catch,因为在IE中测试支持是不确定的,因此唯一的选择就是调用它并看看会发生什么).
由于大多数浏览器默认情况下不会显示它们,因此轻微的脚本错误不是很大的问题.大多数非平凡页面总是会抛出错误(包括SO),具体取决于浏览器,设置和用户的网络环境等.用户被拒绝了他们可能或可能不知道他们丢失的功能(并且实际上可能从中受益).因此,典型的策略是使我们的页面在没有任何脚本的情况下起作用,然后添加脚本功能以增强可用性.这样,如果发生可能会阻止页面有用的错误,则始终会回退基本功能.
这种策略可能并非总是可行,但这是一个很好的起点,不应轻易放弃.