JavaScript是多范式的,并为同步代码提供(至少)3种不同的错误处理策略。
我已经在async
函数的上下文中看到了这个问题,明确建议使用promise,但同步函数呢?
一个例子是解析。假设我有一个将字符串解析为整数的函数。如果输入格式错误,此功能将失败,但我应该如何对此进行建模?
1。试试风格
const f = () => {
throw new Error('Something has gone wrong. ');
};
// Usage
try {
console.log(f());
} catch (error) {
console.error(error);
}
2。回调风格
const f = (callback) => {
callback(new Error('Something has gone wrong. '), null);
};
// Usage
f((error, result) => {
if (error) {
console.error(error);
} else {
console.log(result);
}
});
第3。 FP风格(也见于Go)
const f = () => {
return {
error: new Error('Something has gone wrong. '),
result: null
};
};
// Usage
const { error, result } = f();
if (error) {
console.error(error);
} else {
console.log(result);
}