Javascript 为什么不是';我的try-catch块不会抛出异常吗?
我有一个简单的函数,检查数字是否为正。如果Javascript 为什么不是';我的try-catch块不会抛出异常吗?,javascript,Javascript,我有一个简单的函数,检查数字是否为正。如果a
a<0
function isPositive(a) {
try{
switch(a) {
case a < 0:
throw 'Too small';
}
}
catch(e) {
console.log(e)
}
}
isPositive(-3)
函数isPositive(a){
试一试{
开关(a){
案例a<0:
扔“太小”;
}
}
捕获(e){
控制台日志(e)
}
}
isPositive(-3)
您误用了开关。打开的值必须是大小写表达式中的值。在您的示例中,a
(-3)不是表达式a<0
(即true
)的结果
开关
在这里不是正确的工具,如果
,请使用:
函数isPositive(a){
试一试{
if(a<0){
扔“太小”;
}
}
捕获(e){
控制台日志(e)
}
}
isPositive(-3)
开关的工作方式是:
首先,计算开关
标题(括号中)中的表达式
接下来,对每个案例
表达式进行求值,并与该值进行比较,以确保精确相等。如果找到表达式完全相等的案例
,执行将与该案例的代码一起进行
如果没有匹配的大小写
,则运行默认值
代码(如果存在)
在代码中,开关
表达式的值将为-3
,第一个案例
上表达式的值将为真
。因为true
不完全等于-3
,所以代码不会运行。将开关转过来,逐字检查true,以便可以评估每一行
function isPositive(a) {
try{
switch(true) {
case a < 0:
throw 'Too small';
}
}
catch(e) {
console.log(e)
}
}
isPositive(-3)
函数isPositive(a){
试一试{
开关(真){
案例a<0:
扔“太小”;
}
}
捕获(e){
控制台日志(e)
}
}
isPositive(-3)
要使其工作,必须将值开关的计算值设置为true:
switch(true){ // your code }
然后内部的代码将运行,并抛出错误您不能使用带有条件的用例,您只需使用ifstatement@Axnyff:你可以,但99.999%的时间你不应该。至少::-)