我有一个问题,我如何控制2个错误在尝试/捕捉抛出?
我的代码如下:
如果在try / catch through中同时发生2个错误怎么办?
const downloadFiles = async () => {
try {
setKeyState(ValueState.Success);
setValueState(ValueState.Success);
} catch (err) {
if (err instanceof WrongKeyError) {
setKeyState(ValueState.Error);
} else if (err instanceof WrongValueError) {
setValueState(ValueState.Error);
}
}
};
当setKeyState错误时,状态为ValueState错误当setValueState错误时,状态为ValueState错误
但是当两个都是错误的时候,只有一个状态是ValueState. Error。为什么以及如何修复它,使它们的两个状态都是ValueState.Error?
- 谢谢-谢谢
1条答案
按热度按时间6psbrbz91#
JavaScript是单线程的。多个错误不能同时发生。这里,如果
setKeyState
抛出,setValueState
的调用将永远不会到达--所以即使它抛出错误,也永远不会有WrongValueError
。您需要一个单独的try
/catch
。也就是说,一个函数抛出这样的同步错误是相当奇怪的。最好将
setKeyState
和setValueState
设计成不抛出同步错误。