我有一个函数可以生成从3x3矩阵中的一个位置到另一个位置的路径,因此我可以平滑地改变方向上的图像过渡。它返回一个包含在CSS类中翻译的定位参数的数组,例如:["top left vert", "left slow", "left"]
。转换在我的动画逻辑中的后续setTimout()
调用中处理。
在移动周期结束时,相关元素返回到停止位置。此转换不是由生成路径的函数处理,而是抛出异常。在我的动画逻辑中,我有一个try/catch
块,如果它被抛出,我只是忽略它。这样我知道我必须执行我的停止转换:
var move = moveClass.join(" ");
try {
move = updateDirection(move);
} catch(e) {}
if (move instanceof Array) {…} else {/* stop */}
而不是抛出异常,函数可以在数组中返回相同的位置,我必须比较数组的元素(而不是使用instanceof Array
)。
我知道不应该滥用这样的例外情况。 ;-)我的问题是:这比检查数组的内容(例如if (move[0] == move[1] && move[0] == move[2])
)更贵吗?
答案 0 :(得分:0)
性能结果将根据其运行环境而有所不同。因此,不同的浏览器,操作系统等都会产生影响。
说过通常抛出异常是非常昂贵的事情(只考虑构建堆栈跟踪,生成对象等所涉及的所有工作)。因此,在大多数情况下,如果可以,最好使用比较。
作为大多数(如果不是所有语言)的一般设计原则,例外应该只是 - 规范的例外。您不应该使用它们来控制程序的常规流程,而是处理罕见的异常或异常情况,通常涉及某种错误,失败或错误。