📜  ES6-错误处理

📅  最后修改于: 2020-10-25 10:46:41             🧑  作者: Mango


编程中存在三种错误类型:语法错误,运行时错误和逻辑错误。

语法错误

语法错误(也称为解析错误)发生在传统编程语言的编译时和JavaScript的解释时。当JavaScript中发生语法错误时,仅影响与该语法错误在同一线程中的代码会受到影响,并且假设其他线程中的其他代码均不依赖于包含该错误的代码,则其他代码将被执行。

运行时错误

运行时错误(也称为异常)在执行期间(编译/解释之后)发生。异常还会影响发生它们的线程,从而允许其他JavaScript线程继续正常执行。

逻辑错误

逻辑错误是最难追踪的错误类型。这些错误不是语法或运行时错误的结果。相反,当您在驱动脚本的逻辑中犯了一个错误而您没有得到预期的结果时,它们就会发生。

您无法捕获这些错误,因为这取决于您的业务需求以及要在程序中放置的逻辑类型。

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

Sr.No Error Object & Description
1

EvalError

Creates an instance representing an error that occurs regarding the global function eval().

2

RangeError

Creates an instance representing an error that occurs when a numeric variable or parameter is outside of its valid range.

3

ReferenceError

Creates an instance representing an error that occurs when dereferencing an invalid reference.

4

SyntaxError

Creates an instance representing a syntax error that occurs while parsing the code.

5

TypeError

Creates an instance representing an error that occurs when a variable or parameter is not of a valid type.

6

URIError

Creates an instance representing an error that occurs when encodeURI() or decodeURI() are passed invalid parameters.

抛出异常

可以使用throw语句引发错误(预定义或用户定义)。以后可以捕获这些异常,您可以采取适当的措施。以下是相同的语法。

语法:引发通用异常

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

语法:抛出特定异常

throw new Error_name([message]) 

异常处理

异常处理是通过try … catch语句完成的。当程序遇到异常时,程序将以不友好的方式终止。为了防止出现此意外错误,我们可以将代码包装在try … catch语句中。

在try块之后,必须紧跟一个catch块或一个finally块(或两者之一)。当try块中发生异常时,将该异常放在e中并执行catch块。可选的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中错误处理的第一个功能。只要页面上发生异常,就会在窗口对象上触发error事件。

 
    

    
      

Click the following to see the result:

输出

成功执行上述代码后,将显示以下输出。

一种错误的方法

onerror事件处理程序提供三条信息,以识别错误的确切性质-

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

  • URL-发生错误的文件。

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

以下示例显示了如何提取此信息。

 
    

    
      

Click the following to see the result:

自定义错误

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