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