在捕获之前编辑抛出的错误?

时间:2015-01-14 06:36:35

标签: javascript error-handling exception-handling coffeescript ecmascript-6

让我们说我想编辑Error对象,因为它已被抛出:

try {
    throw Error('foobar')
} catch (e) {
    console.log(e.message)
}

我可以这样做:

(function(status){try{throw Error('foobar')}catch(e){e.status=status; throw e}})(404)

然而,这里是投掷,捕捉,投掷[捕捉]。 有没有办法只抛出/捕获一次?

尝试

{Types}      = require 'mongoose'

exports.valid_access_token = valid_access_token = (access_token, cb) ->
    unless Types.ObjectId.isValid access_token
        return cb ((err) ->
            err.name = 'ValidationError'; err)(Types.ObjectId access_token)
    # Rest omitted for brevity

1 个答案:

答案 0 :(得分:2)

您可以在抛出之前抛出任意对象或设置必要的属性:

try {
    var error = new Error('foobar');
    error.status = 404;
    throw error;
} catch (e) {
    alert('Error: ' + e.status + ', ' + e.message);
}