gpt4 book ai didi

javascript - 为什么我的 try catch block 没有抛出异常?

转载 作者:行者123 更新时间:2023-12-02 12:39:56 27 4
gpt4 key购买 nike

我有一个简单的函数来检查数字是否为正。我希望它在 a < 0 时抛出异常

function isPositive(a) {
try{
switch(a) {
case a < 0:
throw 'Too small';
}
}
catch(e) {
console.log(e)
}
}
isPositive(-3)

最佳答案

您滥用了switch 。您打开的值必须是 === case 表达式中的值。在您的示例中,a (-3) 不是 ===表达式 a < 0 的结果(即 true )。

switch在这里不是合适的工具,请使用 if :

function isPositive(a) {
try{
if (a < 0) {
throw 'Too small';
}
}
catch(e) {
console.log(e)
}
}
isPositive(-3)

...但是如果您真的想使用switch ,你可以(在 JavaScript 中)因为 JavaScript 的 switch与 C、Java 或 C# 有点不同:您可以使用 switch (true)这样它就会匹配表达式 a < 10 :

function isPositive(a) {
try{
switch (true) {
case a < 0:
throw 'Too small';
}
}
catch(e) {
console.log(e)
}
}
isPositive(-3)

案例按照源代码顺序进行测试,第一个匹配的案例获胜。

但再说一遍:if这里正确的是,而不是 switch .

关于javascript - 为什么我的 try catch block 没有抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48209039/

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