没有提出捕获异常

时间:2015-08-13 13:18:20

标签: javascript exception-handling

嘿伙计们我写了一个代码来引发异常..代码是

<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

4 个答案:

答案 0 :(得分:3)

try...catch用于捕获错误,而不是用于处理条件语句。 if (d == 2)完全有效且不会抛出任何错误,条件语句中的代码也不会。

  

catch子句包含一些语句,用于指定在try块中抛出异常时要执行的操作。也就是说,您希望try块成功,如果它不成功,您希望控件传递给catch块。如果try块中的任何语句(或在try块内调用的函数中)抛出异常,则控制立即转移到catch子句。如果try块中没有抛出异常,则跳过catch子句。

     

- MDN's Notes on 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');
}