我试图理解课程中挑战的结果,但我坚持通过,因为结果与他们的期望不符。挑战任务是:
SELECT `id`, (`meta` -> '$.options.info[*].data') `data`
FROM `tbl`
WHERE JSON_CONTAINS(`meta` -> '$.options.info[*].verified', '1');
myError
myErrorName
中
编写一个finally块,检查是否存在myErrorMessage
。myError
我的方法如下:
(myErrorName: myErrorMessage)
答案 0 :(得分:5)
该代码有两个主要问题:
您有一个错字: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");
}
}
(我添加了console.log
,所以我们将看到错误情况。)
我在上面只提到了#1和#2,其余的作为练习供您完成。 :-)
我应该注意,我不会那样写。在catch
块中使用的finally
块中声明变量确实可以与var
一起使用(因为var
未被块作用域并且被提升),但是误导试图维护代码的人。如果要在这两个块中都使用变量,则为了清楚起见,将声明移到块外。
答案 1 :(得分:0)
选中此选项
try{
console.log(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+")";
}else{
result = "No error ocurred";
}
}