gpt4 book ai didi

javascript - 如何使用try/catch和finally编写错误处理 block ?

转载 作者:行者123 更新时间:2023-11-28 12:54:45 25 4
gpt4 key购买 nike

我试图了解类(class)中挑战的结果,但我坚持要通过,因为结果与他们的期望不符。挑战任务是:

  1. 编写一个 try/catch block 来尝试控制台记录 myVar,应故意未定义它,以便生成错误捕获错误。
  2. 在 catch block 中,将整个错误存储在变量 myError
  3. 在 catch block 中,将错误名称存储在变量 myErrorName
  4. 在 catch block 中,将错误消息存储在变量 myErrorMessage 中编写一个finally block 来检查myError 是否存在。
  5. 如果是这样,请定义一个变量 result,它具有以下值:出现错误 (myErrorName: myErrorMessage)
  6. 如果没有,请定义相同的变量 result,但为其分配值“未发生错误!”

我的方法如下:

try{
myVar();
}
catch(err){
var myError = err;
var myErrorName = err.name;
var myErrorMessage = err.message;
}
finally{
if(myError == err){
var result = "There was an error (myErrorName:myErrorMessage)";
}else{
console.log("No error ocurred");
}
}

最佳答案

该代码有两个主要问题:

  1. 您有一个拼写错误:var myErro = err; 缺少 myErro 末尾的 r

  2. 您尝试在 finally block 中使用 err,但它仅在 catch block 的范围内。

...还有一些与作业告诉您要做的事情不符的事情

  • 您没有执行#1,您正在执行其他操作,并且碰巧也尝试使用 myVar

  • 您没有任何实现 #6 的代码。

  • 出现错误时分配 result 的代码是将 myErrorNamemyErrorMessage 按字面意思放入字符串中,而不是使用值这些变量。

  • 没有发生错误时您的消息与他们告诉您使用的消息不同,它有轻微的差异(包括拼写错误)。编程至少部分是关于对细节的关注。 :-)

  • 您不需要 if (myError == err),只需 if (myError) 即可:

    try{
    myVar();
    }
    catch(err){
    var myError = err;
    var myErrorName = err.name;
    var myErrorMessage = err.message;
    }
    finally{
    if(myError){
    var result = "There was an error (myErrorName:myErrorMessage)";
    console.log(result);
    }else{
    console.log("No error ocurred");
    }
    }

    (我添加了 console.log,以便我们看到错误情况。)

    上面我只解决了#1 和#2,其余的作为练习留给您完成。 :-)

    <小时/>

    我应该指出,我不会那样写。在 catch block 中声明一个在 finally block 中使用的变量确实有效,使用 var (因为 var不是 block 作用域并且被提升),但它会误导试图维护代码的人们。如果您要在这两个 block 中使用变量,请将声明移到 block 之外以便清楚起见。

    关于javascript - 如何使用try/catch和finally编写错误处理 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56851000/

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