gpt4 book ai didi

javascript - 使用嵌套的 try-catch block

转载 作者:行者123 更新时间:2023-12-02 22:46:34 28 4
gpt4 key购买 nike

tl;dr 如果任务可能在多个事件中失败,例如API 获取、除法、解析等,使用多个 try-catch block 或单个 block 来捕获所有内容是否有意义?

<小时/>

我有一个函数可以执行两项任务。

  1. 从 API 获取两个数字:ab
  2. 执行a/b

这是实际问题的简化版本。我想问如何处理异常,因为任务可能在两个步骤中的任何一个上失败:

  1. 提取本身失败。
  2. a/b 导致错误,因为 b = 0

我可以想到两种方法。

选项一

try {
const data = getFromAPI();
const result = data[0] / data[1];
return result;
} catch (err) {
// Catch all errors here...
}

选项二

try {
try {
const data = getFromAPI();
} catch(err) {
// Catch all API errors here..
}
const result = data[0] / data[1];
return result;
} catch (err) {
// Catch division errors here...
}

最佳答案

您应该首先检查您正在使用的数据(尽可能合理)。之后,您应该只尝试/捕获可能失败的代码/当它超出您的控制时,别无其他。所以我会给你另一个选择。为了回答你的另一个问题,永远不要使用嵌套的 try catch 语句。这根本没有意义。如果可能发生不同类型的异常,请尝试识别异常的类型(即使用错误对象上的instanceOf方法或属性)并处理它。

选项三

try {
var data = getFromAPI();
} catch (err) {
// Catch errors from the API request here...
}
if(Array.isArray(data) && !isNaN(data[0]) && !isNaN(data[1]) && data[0] > 0 && data[1] > 0) {
const result = data[0] / data[1];
return result;
}

return 0;

关于javascript - 使用嵌套的 try-catch block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58380888/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com