zoukankan      html  css  js  c++  java
  • 错误处理与调试 (14 章 )

    1. try – catch 语句
    try-catch

    finally 语句总会执行,无论是否出错。

    finally

    使用 try-catch 最适合处理那些我们无法控制的错误,在明明白白的知道自己的代码会发生的错误时,就不要再使用 try-catch语句了。

    try {

      window.someNonexistentFunction();

    } catch (error) {

      alert(error.message);  // 这个 message 是所有浏览器都支持的

    }

    抛出错误

    与  try-catch 语句相配的还有一个 throw, 例如 throw “hello”,  throw true 都是可以的, 没有类型限制

    个人自己设定的抛出异常, 最好还是用这种形式 throw new Error("具体异常的message")

    在遇到 throw 操作符时,代码会立即停止执行,仅当有 try-catch 语句捕获到被抛出的值时,代码才会继续执行。

    function process(values) {

      if (!(values instanceof Array)) {

        throw new Error("process(): Argument must be an array.");

      }

    }

    自己测试的抛出异常

    try {
         throw new Error("xxx");
        } catch(error) {
         alert(error.message);
    } finally {
         alert("The last one");

    }

    异常的执行步骤, 跟java一样, 即出现异常后, 程序不会继续执行, 而是到 catch 看捕获情况, finally 最后怎么样都会执行. 以上代码, 执行结果会先显示 "xxx" 再显示 "The last one"

    2. 错误的类型

    - Error

      Error类型的错误很少见,如果有也是浏览器抛出的,这个基类型的主要目的是供开发人员抛出自定义错误。

    - EvalError

       会在使用 eval()函数而发生异常时被抛出。

    - RangeError

       超出范围

    - ReferenceError

       找不到对象

    - syntaxError

       语法错误

    - TypeError

       类型错误, 例如 var o = new 10;  最常发生的就是传递参数时,发生的类型不同

    - URIError

      使用 encodeURI() 或 decodeURI() 而URI格式不正确时,会导致 URIError

    常见的错误

    1. 类型转换错误, 例子, 如下:

     1 function concat(str1, str2, str3) {
     2     var result = str1 + str2;
     3     if (str3) {    // 绝对不要这样
     4         result += str3;
     5     }
     6     return result;
     7 }
     8 // 如上例, 绝对不要这样, 这个函数的用意是拼接两或三个字符串, 其中, 第3个字符串是可选的, 因此必须要检查, 但是未使用过的命名变量会自动被赋给 undefined值, 而undefined值可以被转换成布尔值 false. 所以, 参考如下:
     9 
    10 function concat(str1, str2, str3) {
    11     var result = str1 + str2;
    12     if (typeof str3 == "string") {    // 比较恰当
    13         result += str3;
    14     }
    15     return result;
    16 ]

    2. 数据类型错误

     1 function reverseSort(values) {
     2     if (values != null) {    // 绝对不要这样
     3         values.sort();
     4         values.reverse();
     5     }
     6 }
     7 // 任何一个非数组参数, 都将导致错误
     8 // 改为以下办法
     9 function reverseSort(values) {
    10     if (typeof values instanceof Array) {    // 问题解决了
    11         values.sort();
    12         values.reverse();
    13     }
    14 }

    调试

    以前经常使用 alert 来显示结果和错误, 现在可以使用控制台来完成, 可以通过 console 对象向 javascript 控制台中写入消息, 这个对象具有下列方法.

    error(message): 将错误消息记录到控制台

    info(message): 将信息性消息记录到控制台

    log(message): 将一般消息记录到控制台

    warn(message): 将警告消息记录到控制台

    例如:

    1 function sum(num1, num2) {
    2     console.log("Entering sum(), arguments are " + num1 + "," + num2);
    3     console.log("Before calculation");
    4     var result = num1 + num2;
    5     console.log("After calculation");
    6     
    7     console.log("Exiting sum()");
    8     return result;
    9 }

    console.log(变量名)

    很多浏览器工具提供了一些调试,比如单步跟踪。

  • 相关阅读:
    Vim配置及使用技巧
    终端提示符的配置
    Archlinux下i3wm与urxvt的配置
    Linux压缩命令
    Archlinux无线联网教程
    Archlinux安装和使用技巧
    Linux下硬盘分区
    Linux挂载
    Android中pullToRefresh使用
    SVN服务器搭建和使用教程
  • 原文地址:https://www.cnblogs.com/moveofgod/p/2789434.html
Copyright © 2011-2022 走看看