我想知道是否有一种方法可以抛出多个错误并在 JavaScript 中捕获所有错误。
我正在寻找特定的字段,当我找到一个缺失的字段时,我想抛出一个错误。
问题是如果我抛出一个错误,比如:
throw "you are missing field: " xxxxxx
我不会告诉用户他/她缺少的所有其他字段。
我也不希望将所有内容组合成一个字符串,因为错误消息可能太长。
有什么想法吗?
谢谢。
最佳答案
您创建自己的 Error
类型来保存缺失字段的列表:
class MissingFieldsError extends Error {
constructor(fields, ...params) {
super(...params);
this.fields_ = fields;
}
getMissingFields() {
return this.fields_;
}
}
要使用它,您可以先收集所有缺失的字段,然后抛出一个 MissingFieldsError
实例。
假设您有某种 Field
实例数组,代码应如下所示:
const missingFields = fields
.filter((field) => field.isMissing())
.map((field) => field.getName());
if (missingFields.length > 0) {
throw new MissingFieldsError(
missingFields, 'Some required fields are missing.');
}
如果您愿意,您甚至可以抛出单独的 Error
,收集它们然后抛出 MissingFieldsError
:
const missingFields = [];
fields.forEach((field) => {
try {
const value = field.getValue();
// Process the field's value.
// Could be just field.validate();
} catch (e) {
missingFields.push(field.getName());
}
});
if (missingFields.length > 0) {
throw new MissingFieldsError(
missingFields, 'Some required fields are missing.');
}
关于javascript - 在 JavaScript 中抛出多个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29028813/