我试图理解我课程中挑战的结果,但我坚持通过,因为结果与他们的期望不符。挑战任务是:
myErrormyErrorNamemyErrorMessage
编写一个finally块,检查是否myError存在。(myErrorName: myErrorMessage)我的方法如下:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
该代码有两个主要问题:
您有错别字:var myErro = err;缺少r的结尾myErro。
您正在尝试err在finally块中使用,但这仅在catch块中的范围内。
...然后还有其他一些与作业似乎不符的地方告诉您要做
您不是在做#1,而是在做其他事情,这些事情恰巧也尝试使用 myVar
您没有实现#6的任何代码。
您的代码分配result时,有一个错误是把myErrorName和myErrorMessage字面上的字符串,而不是使用这些变量的值。
您没有错误发生时的提示信息与他们告诉您使用的提示信息不同,只是略有不同(包括错字)。编程至少部分是关注细节。:-)
您不需要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");
}
}Run Code Online (Sandbox Code Playgroud)
(我添加了一个,console.log因此我们将看到错误情况。)
我在上面只提到了#1和#2,其余的作为练习供您完成。:-)
我应该指出,我不会那样写。在catch块中使用的finally块中声明变量确实可以var(因为var它不是块作用域的,而是被吊起的),但是它对试图维护代码的人产生了误导。如果要在这两个块中都使用变量,则为了清楚起见,将声明移到块外。
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |