开发学院

您的位置:首页>教程>正文

教程正文

ES6 错误处理

ES6 错误处理

  ES6 编程中一般有三种类型的错误:语法错误、运行时错误和逻辑错误。

语法错误

  语法错误,也称为解析错误,在传统编程语言编译的时候和在JavaScript中解释的时候发生。当在JavaScript中发生语法错误时,只有与语法错误相同的线程中包含的代码受到影响,如果其他线程中的代码中没有任何内容依赖于于包含错误的代码,那么它不会受到影响,继续执行.

运行时错误

  运行时错误,也称为异常,在执行期间(编译/解释后)发生。异常也影响到发生异常的线程,其他JavaScript线程继续正常执行。

逻辑错误

  逻辑错误可能是最难跟踪的错误类型。这些错误不是语法或运行时错误的结果。相反,它们是在您在驱动脚本的逻辑中出错时发生的,而不像预期的那样得到结果。

  一般很难捕获这些错误,因为它取决于您的业务需求,您希望将什么类型的逻辑放入您的程序中。

  当发生运行时错误时,JavaScript抛出错误对象的实例。下表列出了错误对象的预定义类型。

  • 1.EvalError:返回一个表示在全局函数eval()上发生的错误实例。

  • 2.RangeError:返回一个表示当数值变量或参数超出其有效范围时发生的错误实例。

  • 3.ReferenceError:返回一个表示该实例表示取消引用无效引用时发生的错误实例。

  • 4.SyntaxError:返回一个表示在解析代码时发生的语法错误实例。

  • 5.TypeError:返回一个表示当变量或参数不是有效类型时发生的错误实例。

  • 6.URIError:返回一个表示当encodeuri()或decodeuri()传递无效参数时发生的错误实例。

抛出异常

  可以使用throw语句来引发一个错误(预定义或用户定义的错误)。稍后可以捕获这些异常,您可以采取适当的操作,下面是语法。

语法:抛出一个泛型异常

throw new Error([message]) 
OR 
throw([message])

语法:抛出一个特定的异常

throw new Error_name([message])

异常处理

  异常处理是通过try...catch语句。当程序遇到异常时,程序将以不友好的方式终止。为了防止这种意外的错误,我们可以使用try...catch语句包含我们的代码。

  try块必须紧跟一个catch块或一个finally(catch/finally二选一)。当try块中发生异常时,将执行cacthc的内容,可选的finally块在try/catch后无条件执行

  下面是语法:

try {  
   // Code to run  
   [break;]  
} catch ( e ) {  
   // Code to run if an exception occurs
   [break;]  
}[ finally {  
   // Code that is always executed regardless of  
   // an exception occurring  
}]

例子

var a = 100; 
var b = 0; 
try { 
   if (b == 0 ) { 
      throw(“Divide by zero error.”); 
   } else { 
      var c = a / b; 
   } 
} 
catch( e ) { 
   console.log("Error: " + e ); 
}

输出

  上述代码输出如下内容

Error: Divide by zero error

注意:您可以在一个函数中引发异常,然后您可以在函数中或在调用函数中使用try...catch来捕获该异常。

onerror( )方法

  onerror事件处理程序是第一个方便在JavaScript中处理错误的功能。当页面上发生异常时,将在窗口对象上触发错误事件。

例子

<html> 
   <head> 
      <script type = "text/javascript"> 
         window.onerror  =  function () {  
            document.write ("An error occurred.");  
         } 
      </script> 
   </head> 

   <body> 
      <p>Click the following to see the result:</p> 
      <form> 
         <input type = "button" value = "Click Me" onclick = "myFunc();" /> 
      </form> 
   </body> 
</html>

输出

  上述代码输出如下内容

error.png

error2.png

  onerror事件处理程序提供了三个信息,以确定错误的确切性质

  •   -错误消息:浏览器将显示给定错误的相同消息。

  •   -URL:发生错误的文件URL地址。

  •   -行号:给定URL中导致错误的行号。

  下面的示例演示如何提取此信息。

例子

<html> 
   <head> 
      <script type = "text/javascript"> 
         window.onerror  =  function (msg, url, line) {  
            document.write ("Message : " + msg );  
            document.write ("url : " + url );  
            document.write ("Line number : " + line );  
         } 
      </script> 
   </head> 

   <body> 
      <p>Click the following to see the result:</p> 
      <form> 
         <input type = "button" value = "Click Me" onclick = "myFunc();" /> 
      </form> 
   </body> 
</html>

自定义错误

  JavaScript支持自定义错误的概念。下面的示例解释了如何自定义错误。

例子1: 使用默认消息自定义错误

function MyError(message) { 
   this.name = 'CustomError'; 
   this.message = message || 'Error raised with default message'; 
} 
try { 
   throw new MyError(); 
} catch (e) {  
   console.log(e.name);      
   console.log(e.message);  // 'Default Message' 
}

  上述代码的输出如下:

CustomError 
Error raised with default message

例子 2: 使用自定义的错误消息的定义错误

function MyError(message) { 
   this.name = 'CustomError'; 
   this.message = message || 'Default Error Message';  
} try { 
   throw new MyError('Printing Custom Error message'); 
} 
catch (e) { 
   console.log(e.name);      
   console.log(e.message);  
}

  上述代码的输出如下:

CustomError 
Printing Custom Error message