`
ldi543lc
  • 浏览: 12479 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript try catch捕获异常

阅读更多

javascript try catch捕获异常
2011年03月26日
  try{
  //code to run
  [break;]
  }catch([exception]){
  //code to run if an exception occurs and the exception is matched
  [break;]
  }[finally{
  //code that is always executed regardless of exception occurring
  }]
  例如
  try{
  window.openMyWindow();
  alert("Method complete!");
  }catch(exception){
  alert("an exception occurred");
  }finally{
  alert("end fo try...catch test.");
  }
  运行try...catch语句时,解释程序首先进入try关键词后的代码块。执行 window.openMyWindow();时,会产生错误。这时,解释程序立刻从try子句中退出,然后进入catch子句,跳过剩下的代码(alert("Method complete!");)。在catch中的alert被执行,然后继续执行finally子句中的代码。
  与java C#不同,javascript在try...catch语句中只能有一个catch子句。因为javascript是弱类型语言,没办法指明catch子句中异常的特定类型,不管是什么错误类型,都是由同一个catch子句处理。而finally子句不管是否发生异常,都要执行当中的代码。
  try...catch的嵌套
  在try...catch语句中,如果catch子句中也发生错误,那么就可以使用嵌套的try...catch语句。
  try{
  eval_r("a++b");
  }catch(oException){
  alert("An exception occurred");
  try{
  var aErrors=new Array(100000000000000000000000);  //caurse error
  aError.push(exception)
  }catch(oException2){
  alert("Another exception occurred");
  }
  }finally{
  alert("all done");
  }
  上面例子中,抛出第一个错误后,立刻出现第一个警告框。继续执行第一个catch子句时,由于尝试创建一个超大的数组,出现了另一个错误。于是进入第二个catch子句,并显示警告框,最后进入finally子句,执行完毕。
  Error对象
  javascript有个Error基类用于抛出。Error对象具有以下特性:
  name---表示错误类型的字符串
  message---实际的错误信息
  Error对象的名称对应于它的类,可以是以下值之一
  类 发生原因 EvalError 错误发生在eval_r()函数中 RangeError 数字的值超出了 javascript可表示的范围即超出了Number.MIN_VALEU和Number.MAX_VALUE ReferenceError 使用了非法的引用 SyntaxError 在eval_r()函数调用中发生了语法错误 TypeError 变量的类型不是预期所需的 URIError 在encodeURI()或者decodeURI()函数中发生了错误。 message特性可为用户提供更加有意义的信息,同时可以阻止浏览器直接报告错误:
  try{
  window.openMyWindow();
  alert("Method complete");
  }catch(oException){
  alert("An exception occurred:"+message.name);
  }finally{
  alert("End of try...catch test.");
  }
  判断错误类型
  1.使用Error对象的name特性
  try{
  window.openMyWindow();
  alert("Method complete");
  }catch(oException){
  if(oExceptioin.name=="SyntaxError"){
  alert("Syntax Error:"+oException.message);
  }else{
  alert("An unexpected orror occurred:"+oException.message);
  }
  }
  2.使用instanceof操作符,并使用不同错误的类名:
  try{
  window.openMyWindow();
  alert("Method complete");
  }catch(oException){
  if(oExceptioin instanceof SyntaxError){
  alert("Syntax Error:"+oException.message);
  }else{
  alert("An unexpected orror occurred:"+oException.message);
  }
  }
  抛出异常 throw
  throw语法如下
  throw error_object; 
  error_object可以是字符串、数字、布尔值或者是实际对象
  throw  "An error occurred";
  throw  1234;
  throw  true;
  throw  new Object();
  也可以抛出一个Error对象。Error对象的构造函数只有一个参数,错误信息。例如
  throw new Error("You tried to do something bad");
  其他的Error子类也可以:
  throw new  SyntaxError("I don't like your syntax");
  throw new  TypeError("What type of variable do you take me for?");
  throw new  RangeError("Sorry,you just don't have the range.");
  throw new  EvalError("That doesn't evaluate.");
  throw new  UEIError("Uri,is that you?");
  throw new ReferenceError("you didn't cite your references properly.");
  实际地说,正常的执行不能继续时,应该抛出一个异常,例如:
  function doAdd(){
  if(arguments.lengthError("Two number are required!");
  }else{
  return a+b;
  }
  }
  结合try...catch捕获异常
  try{
  var result=doAdd(10);
  }catch(oException){
  alert(oException.message);
  }
分享到:
评论

相关推荐

    javascript中的try catch异常捕获机制用法分析

    - **避免在catch块中忽视异常**:捕获异常后最好进行适当的处理,例如记录日志、给出用户反馈或恢复程序状态。 - **finally块用于资源清理**:无论是否发生异常,finally块都会执行,适合用来关闭文件、释放内存等...

    trycatch.zip

    在许多语言中,如Java、C#和JavaScript,`try...catch` 结构用于捕获并处理可能出现的异常。然而,原生的Golang并没有直接提供`try...catch`这样的异常处理机制,但我们可以借鉴其他语言的思想,通过自定义的方式来...

    js代码-封装try-catch函数,实现套用

    在JavaScript编程中,`try-catch`语句是用于异常处理的关键结构,它允许程序员捕获并处理可能出现的错误。这个标题"js代码-封装try-catch函数,实现套用"意味着我们要探讨如何将`try-catch`逻辑封装到一个自定义函数...

    try-catch的用法和含义

    `try-catch` 结构作为异常处理的核心机制,在各种编程语言中广泛采用,如 Java、C# 和 JavaScript 等。本文将深入探讨 `try-catch` 的基本概念、语法结构及其应用场景。 #### 一、`try-catch` 的基本概念 `try-...

    javascript中 try catch用法

    catch块可以捕获异常对象,然后通过catch块内的代码来处理这个异常。 finally块:在try...catch结构后可以添加finally块,其包含的代码无论是否发生错误都将被执行。finally块常用于执行清理工作,比如关闭文件句柄...

    前端开源库-trycatch

    Trycatch能够捕获这些异常,并将它们封装在一个可以被处理的对象中,使得异常处理不再局限于单个回调函数,而是扩展到了整个异步执行链。 ### 长堆栈跟踪 传统的JavaScript异常处理只能提供有限的调用堆栈信息,这...

    一个自动给async函数注入trycatch的webpackloader

    为了提高代码的健壮性和可维护性,通常会使用try/catch语句来捕获并处理可能出现的异常。在本案例中,我们关注的是一个名为“async-catch-loader”的webpack loader,它旨在自动化这个过程,即在编译阶段自动为async...

    javascript 中的try catch应用总结

    JavaScript中的`try...catch`语句是用于处理程序运行时可能出现的错误的一种机制。它允许开发者在代码中捕获并处理异常,防止程序因未预期的错误而崩溃。以下是关于`try...catch`的一些关键知识点: 1. **基本结构*...

    前端开源库-async-try-catch

    当 `await` 表达式后面的 Promise 被拒绝时,会抛出一个异常,此时需要使用 `try/catch` 块来捕获这个异常。 `async-try-catch` 库的核心功能就是扩展了传统的 `try/catch` 语句,使其在 `async` 函数中更加有效。...

    await包装器以便在没有trycatch的情况下更容易地处理错误

    然而,直接使用`await`时,如果Promise被拒绝(即发生错误),JavaScript会抛出一个未捕获的异常,这可能会导致程序中断。为了在不使用`try-catch`块的情况下优雅地处理这些错误,我们可以创建一个`await`包装器。...

    tryjs:为代码自动加 try-catch,捕获异常。wrap function body with try-catch

    安装 npm install tryjs -g 如果安装失败,请使用 sudo 使用 进入到想要执行的目录 执行 tryjs $ tryjs Usage Usage: tryjs [options] Options: -h, --help output usage information -V, --version output the ...

    JavaScript中的异常捕捉介绍

    JavaScript中的异常处理机制是通过`try...catch...finally`语句来实现的,它允许开发者在代码中捕获并处理可能出现的错误。这个机制与Java类似,但有一些关键的差异。 首先,`throw`语句在JavaScript中可以抛出任何...

    js实践篇:例外处理Try{}catch(e){} 1

    本文将深入探讨JavaScript中的异常处理机制,包括Error对象、自定义异常以及try...catch...finally语句的用法。 一、异常处理概念 在JavaScript运行时,如果发生如数组索引越界、类型不匹配或语法错误等错误,解释...

    catchall:捕获所有 javascript 错误

    动机捕获 JavaScript 中抛出的所有异常。 在错误的来源处捕获错误。 能够在alpha 测试时记录错误并将错误发送到服务器。 受到和 node.js 的uncaughtException事件的。 确定 try/catch 块在不应该使用的地方使用。...

    捕获和分析JavaScript Error的方法

    当在`try`块中的代码抛出异常时,`catch`块可以捕获并处理这个异常。例如,当我们知道某个API可能会抛出异常,如`localStorage.setItem`在超出存储限制或隐私浏览模式下,我们可以将其包裹在`try-catch`中,如下所示...

    js中的异常处理try...catch使用介绍

    try...catch结构是JavaScript中处理异常的主要方式。try块内包含可能抛出异常的代码,而catch块用于处理try块中的异常。通过这种方式,程序即使遇到错误也能够继续运行,而不是直接崩溃。 try...catch语句的结构...

    JavaScript异常处理

    JavaScript中的异常处理主要通过`try-catch-finally`结构来实现。`try`块包含可能抛出异常的代码,如果在`try`块中出现错误,控制权会立即转移到与之对应的`catch`块。`catch`块用来捕获和处理异常,`finally`块则...

Global site tag (gtag.js) - Google Analytics