哪些关键字用于处理JavaScript中的异常

哪些关键字用于处理JavaScript中的异常

JavaScript 通过”try..catch…finally”语句来处理异常。以下是一个示例语句。

try { 
  // Attempt to execute this code 
} catch (exception) { 
  // This code handles exceptions 
} finally { 
  // This code always gets executed 
} 

”try…catch…finally”块的第一个元素是“try”子句。“try”子句用于限制可能生成异常的代码块,并且是必须实施的。 “try”子句应该与“catch”和/或“finally”子句中的一个或多个相伴。

“catch”块: “try…catch…finally”的第二个元素是“catch”子句。如果“try”子句中发生异常,那么“catch”子句是最有效的代码块。尽管“catch”子句是可选的,但没有它不能处理异常。这是因为“catch”子句会阻止异常通过调用堆栈传播,允许系统进行恢复。如果“try”块内发生异常,它会立即传递给“catch”子句。异常会传递给“catch”块进行处理。下面的示例展示了如何使用“catch”子句处理“ReferenceError”异常。请注意,“catch”子句通过“exception”变量包含“ReferenceError”项。

try { 
  
 // ReferenceError 
  foo++;   
} catch (exception) { 
  
  // It handles the exception 
  var message = exception.message;   
} 

复杂的程序可能会产生一些异常。在这种情况下,可以使用“instanceof”运算符区分不同类型的异常。在示例中,预计“try”子句可以生成不同类型的异常。“catch”子句使用“instanceof”逐个处理来自所有不同类型错误的“TypeError”和“ReferenceError”异常。

try { 
  
  // Assuming an exception is occurring 
} catch (exception) { 
  if (exception instanceof TypeError) { 
  
    // This part handles TypeError exceptions 
  } else if (exception instanceof ReferenceError) { 
  
    // This part handles ReferenceError exceptions 
  } else { 
  
    // This part handles all other  
    // types of exceptions 
  } 
}

“finally”块: “try…catch…finally”语句的最后一个元素是可选的,即“finally”子句。无论是否出现错误,都会执行“finally”子句中的代码块,它在“try”和“catch”子句之后执行。这对于简化代码(处理剩余文件等)非常有用。请注意,即使发生未捕获的异常,也会执行“finally”子句。在这种情况下,会在执行“finally”子句后正常处理抛出的异常。

即使“try”或“catch”子句执行“return”语句,也会执行“finally”子句。例如,下面的示例返回伪值,因为“finally”子句是最后执行的部分。

function case() { 
  try { 
    return true; 
  } finally { 
    return false; 
  } 
} 

抛出异常: JavaScript允许程序员使用”throw”语句来抛出自己的异常。通过使用它,调试和跟踪程序员变得更加简单。可以抛出任何类型的统计数据作为异常,并且可以捕获和抛出相同数据的多个实例。

“throw”语句可以与任何具有许多好处的数据类型一起使用。例如,Firefox提供了针对对象的调试信息,例如异常发生的文件行号。

例如,文件中的某个地方发生了一个除法运算。由于JavaScript中除以零会导致”NaN”,这可能会产生令人困惑的结果,很难调试。如果应用程序抛出关于”除零”的异常,可以使这个过程更简单。以下”if”语句通过抛出异常来解释这种情况。

尽管”throw”语句可以与任何统计数据类型一起使用,但使用内置的异常类型有一些优势。例如,Firefox通过增加调试信息,如发生异常的文件名和行号,为对象提供了独特的解决方案。

if (denominator === 0) 
  throw new Error("Attempted division by zero!"); 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程