no-throw-cr-literal

这类似于 ESLint 内置规则 no-throw-literal。它禁止直接抛出 Components.results 代码。

抛出裸字面量不如抛出 Exception 对象,后者提供堆栈信息。Cr.ERRORs 应该作为第二个参数传递给 Components.Exception() 以创建具有堆栈信息的 Exception 对象,以及其他代码期望的对应于 NS_ERROR 的正确 result 属性。使用常规的 new Error() 来包装只会将其转换为字符串,并且不会设置 result 属性,因此无法识别错误。

此选项可以自动修复 (--fix)。

performance.timing.navigationStart + performance.now()

通常相对于页面加载的时间就足够了,并且可能不需要进行转换。

此规则的错误代码示例:

throw Cr.NS_ERROR_UNEXPECTED;
throw Components.results.NS_ERROR_ABORT;
throw new Error(Cr.NS_ERROR_NO_INTERFACE);

此规则的正确代码示例:

throw Components.Exception("Not implemented", Cr.NS_ERROR_NOT_IMPLEMENTED);