嘿伙计们我写了一个代码来引发异常..代码是
<html>
<body>
<script>
var d =1;
try {
if(d == 2) {
console.log('fd');
}
} catch(e) {
console.log('catch');
}
</script>
</body>
</html>
当我为2
提供值d
时,内部代码可以正常运行,但是当值1
时,catch
内的代码无法运行..
你能告诉我为什么它不起作用?? ..任何帮助都会很棒...... Thanx
答案 0 :(得分:3)
try...catch
用于捕获错误,而不是用于处理条件语句。 if (d == 2)
完全有效且不会抛出任何错误,条件语句中的代码也不会。
catch子句包含一些语句,用于指定在try块中抛出异常时要执行的操作。也就是说,您希望try块成功,如果它不成功,您希望控件传递给catch块。如果try块中的任何语句(或在try块内调用的函数中)抛出异常,则控制立即转移到catch子句。如果try块中没有抛出异常,则跳过catch子句。
如果您想在d
不等于2
时执行某些操作,则可以使用else
:
if (d == 2) {
...
}
else {
...
}
如果你真的想在这里使用try...catch
语句,那么你将不得不抛出一个错误。您可以使用JavaScript的throw
语句执行此操作:
try {
if (d != 2) {
throw "d is not equal to 2!";
}
}
catch (e) {
...
}
此处的catch块将捕获错误,e
参数将等于我们的错误字符串:"d is not equal to 2!"
。
答案 1 :(得分:2)
try / catch用于处理错误。您没有生成错误,因为您的比较是有效的比较。错误与返回false的if语句不同。
答案 2 :(得分:1)
这不是捕获的意图。抛出异常后将访问catch块。例如,尝试将以下else
块添加到if
:
else { throw new Error; }
尽管如此,通过例外来控制流量并不是一个好主意,我强烈反对在生产环境中使用这样的解决方案。
答案 3 :(得分:0)
您需要抛出异常。在代码中使用throw "Exception"
,如下所示:
try {
if(d == 2) {
console.log('fd');
}else{
throw "Exception";
}
} catch(e) {
console.log('catch');
}