[译]Javascript中的错误信息处理(Error handling)

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单

源地址在此:

https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b

在Javascript中使用try/catch/finally来处理runtime的错误.这些runtime错误被称为exceptions.各种各样的原因都可能导致exception.比如,使用没有申明的变量或者方法都可能导致exception.

可能导致exceptions的Javascript语句都应该被包裹在try语句内.当try语句内的某一句导致exception的时候,控制权就立刻转移到catch语句内,然后跳过try语句内的剩下所有代码内容.

Javascript try catch例子:

try
{
    // Referencing a function that does not exist cause an exception
    // 使用不存在的函数导致产生一个exception
    document.write(sayHello());
    // Since the above line causes an exception, the following line will not be executed
    // 因为以上的代码导致出现exception,所以这以下的代码将不会运行   document.write("This line will not be executed");
}
// When an exception occurs, the control is transferred to the catch block
//当exception产生后,控制权就转交到了catch语句块中

catch (e)
{
    document.write("Description = " + e.description + "[br/]");
    document.write("Message = " + e.message + "[br/]");
    document.write("Stack = " + e.stack + "[br/][br/]");
}
document.write("This line will be executed");

Output : // JavaScript try catch example.png

请注意:一个try语句块应该始终紧跟一个catch语句块或者一个finally语句块,或者两者兼有

finally语句块无论exception是否产生都会运行.其主要用处在于清理和释放脚本运行期间所占用的资源.举个例子,如果你的try语句块打开了一个文件且运行,而好死不死又发生了一个exception,那么finally语句块就是用来关闭文件的.

Javascript try catch finally例子:

try
{
    // Referencing a function that does not exist cause an exception
    document.write(sayHello());
    // Since the above line causes an exception, the following line will not be executed
    document.write("This line will not be executed");
}
// When an exception occurs, the control is transferred to the catch block
catch (e)
{
    document.write("Description = " + e.description + "[br/]");
    document.write("Message = " + e.message + "[br/]");
    document.write("Stack = " + e.stack + "[br/][br/]");
}
finally
{
    document.write("This line is guaranteed to execute");
}

Output : JavaScript try catch finally example.png

Javascript中的格式错误与exceptions需要注意的是:

try/catch/finally语句块可以捕捉到exceptions,但是格式错误则无法被其捕捉到.

例子:以下代码中有一个格式错误-丢失了闭小括号.catch语句块则无法捕捉到这个错误

try
{
    alert("Hello";
}
catch (e)
{
    document.write("JavaScript syntax errors cannot be caught in the catch block");
}

Javascript throw语句:用throw语句来捕捉自定义exceptions

Javascript throw exception例子:

JavaScript throw exception example :
function divide()
{
    var numerator = Number(prompt("Enter numerator"));
    var denominator = Number(prompt("Enter denominator"));

    try
    {
        if (denominator == 0)
        {
            throw {
                error: "Divide by zero error",
                message: "Denominator cannot be zero"
            };
        }
        else
        {
            alert("Result = " + (numerator / denominator));
        }

    }
    catch (e)
    {
        document.write(e.error + "[br/]");
        document.write(e.message + "[br/]");
    }
}

divide();
时间: 2024-07-29 16:48:44

[译]Javascript中的错误信息处理(Error handling)的相关文章

javascript中的错误处理机制

前面的话 错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较差的用户体验.由于任何javascript错误都可能导致网页无法使用,因此作为开发人员,必须要知道何时可能出错,为什么会出错,以及会出什么错.本文将详细介绍javascript中的错误处理机制 error对象 error对象是包含错误信息的对象,是javascript的原生对象.当代码解析或运行时发生错误,javascript引擎就会自动产生并抛出一个error对象的实例,然后整个程序

[译]JavaScript中,{}+{}等于多少?

[译]JavaScript中,{}+{}等于多少? 原文:http://www.2ality.com/2012/01/object-plus-object.html 最近,Gary Bernhardt在一个简短的演讲视频“Wat”中指出了一个有趣的JavaScript怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解这些计算结果是如何得出的. 在JavaScript中,加法的规则其实很简单,只有两种情况:你只能把数字和数字相加,或者字符串和字符串相加,所有其他类型的值

软件测试作业2 — 软件测试中的错误Failure, Error, Fault的区别

软件测试中的错误Failure, Error, Fault的区别: Failure: External, incorrect behavior with respect to the requirements or other description of the expected behavior(预期行为出错或与其他的外部行为描述不符).指软件在运行时出现的功能的丧失,类似于看病时病人发病的症状. Fault: A static defect in the software(软件中的静态缺陷

javascript中常见错误类型

js中控制台报错主分两大类: 第一类:语法错误,这一类错误在javascript预解析的过程中如果遇到,则会导致整个js文件都无法执行. 另一类:统称为异常,这一类的错误会导致在错误出现的那一行之后的代码无法执行,但注意,在那一行之前的代码是不会受到影响的. 注意:以下的6种错误中,都可以按照3个参数来查找错误: 第一个参数message:表示错误提示信息,第二个fileName文件名,第三个lineNumber行号. 1. SyntaxError(语法错误): 2. Uncaught Refe

[译]javascript中的依赖注入

前言 在上文介绍过控制反转之后,本来打算写篇文章介绍下控制反转的常见模式-依赖注入.在翻看资料的时候,发现了一篇好文Dependency injection in JavaScript,就不自己折腾了,结合自己理解翻译一下,好文共赏. 我喜欢引用这样一句话'编程是对复杂性的管理'.可能你也听过计算机世界是一个巨大的抽象结构.我们简单的包装东西并重复的生产新的工具.思考那么一下下,我们使用的编程语言都包括内置的功能,这些功能可能是基于其他低级操作的抽象方法,包括我们是用的javascript. 迟

本人arcgis api for javascript中常见错误总结

1. 2.对象不支持"replace"属性或方法 解决办法:一般在ie中执行js会报这样的错误,基本问题就是你引用了某个对象中不存在的方法,可能是这个方法本来存在而你写错了,或者调用这个方法的时候传入了非法的参数,但这只是粗心造成的,还有就是名字重复的原因,自定义的方法名和原有的重复. 3.iis出现HTTP 错误 403.14 - Forbidden Web问题 前提是在iis服务器里目录浏览已打勾: 在本地iis服务器里测试网站的时候出现HTTP 错误 403.14 - Forbi

[译]Javascript中闭包的各种例子

本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b 在本次的视频中我们将讨论一个简单的Javascript闭包例子.每次我们点击页面上的按钮的时候,我们都想要点击计数增加1.为了达到这个目的,我们有很多中途径. 首先我们可用一个全局变量,然后每次我们点击按钮后,这个变量增

异步编程错误处理 ERROR HANDLING

Chapter 16, "Errors and Exceptions," provides detailed coverage of errors and exception handling. However, in the context of asynchronous methods, you should be aware of some special handling of errors. Let's start with a simple method that thro

Python学习-16.Python中的错误处理

虽然叫错误,但跟 C# 中的异常是一回事.只不过 Python 中叫错误(Error)而 C# 中叫异常(Exception). 先手工产生一个异常: 1 file = open('','r') 上面一句由于路径是空路径,因此文件肯定是不存在的,执行这一句会引发 FileNotFoundError 这个错误. 既然是错误的,程序也停止了,这是我们不希望的,因此得想办法处理一下. 在 Python 中,异常处理使用 try.except.finally 这三个关键字. 修改代码如下: 1 path