教程 > es6 教程 > 阅读:60

es6 错误处理——迹忆客-ag捕鱼王app官网

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


语法错误

语法错误,也称为解析错误,发生在传统编程语言的编译时和 javascript 的解释时。 当 javascript 中发生语法错误时,只有包含在与语法错误相同的线程中的代码会受到影响,其他线程中的其余代码将被执行,假设它们中没有任何内容取决于包含错误的代码。


运行时错误

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


逻辑错误

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

我们无法捕获这些错误,因为这取决于业务需求,我们希望在程序中放入哪种类型的逻辑。

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

序号 error 对象 描述
1 evalerror 创建一个实例,表示发生在全局函数 eval() 方面的错误。
2 rangeerror 创建一个实例,表示当数字变量或参数超出其有效范围时发生的错误。
3 referenceerror 创建一个实例,表示取消引用无效引用时发生的错误。
4 syntaxerror 创建一个实例,表示解析代码时发生的语法错误。
5 typeerror 创建一个实例,表示当变量或参数不是有效类型时发生的错误。
6 urierror 创建一个实例,表示在向 encodeuri() 或 decodeuri() 传递无效参数时发生的错误。

抛出异常

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

语法:抛出一般异常

throw new error([message]) 
// 或者 
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 中错误处理的功能。 每当页面上发生异常时,都会在 window 对象上触发 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

查看笔记

扫码一下
查看教程更方便
网站地图