Error.prototype.cause - JavaScript Error 对象
Error.prototype.cause
cause
属性表示错误的特定原始原因。
当捕获并重新抛出带有更具体或有用的错误消息的错误时使用,以便仍然可以访问原始错误。
Description
This is the value that was passed to the Error()
constructor in the options.cause
argument.
The value can be of any type. You should not make assumptions that the error you caught has an Error
as its cause
, in the same way that you cannot be sure the variable bound in the catch
statement is an Error
either. The "Providing structured data as the error cause" example below shows a case where a non-error is deliberately provided as the cause.
Examples
Rethrowing an error with a cause
It is sometimes useful to catch an error and re-throw it with a new message. In this case you should pass the original error into the constructor for the new Error
, as shown.
try { connectToDatabase(); } catch (err) { throw new Error('Connecting to database failed.', { cause: err }); }
For a more detailed example see Error > Differentiate between similar errors.
Providing structured data as the error cause
Error messages written for human consumption may be inappropriate for machine parsing — since they're subject to rewording or punctuation changes that may break any existing parsing written to consume them. So when throwing an error from a function, as an alternative to a human-readable error message, you can instead provide the cause as structured data, for machine parsing.
function makeRSA(p, q) { if (!Number.isInteger(p) || !Number.isInteger(q)) { throw new Error('RSA key generation requires integer inputs.', { cause: { code: 'NonInteger', values: [p, q] }, }); } if (!areCoprime(p, q)) { throw new Error('RSA key generation requires two co-prime integers.', { cause: { code: 'NonCoprime', values: [p, q] }, }) } // rsa algorithm… }
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!