[译]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();
[译]Javascript中的错误信息处理(Error handling)的更多相关文章
- javascript中的错误处理机制
× 目录 [1]对象 [2]类型 [3]事件[4]throw[5]try[6]常见错误 前面的话 错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较 ...
- [译]Javascript中的本地以及全局变量
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- [译]JavaScript中,{}+{}等于多少?
最近,Gary Bernhardt在一个简短的演讲视频“Wat”中指出了一个有趣的JavaScript怪癖:在把对象和数组混合相加时,会得到一些你意想不到的结果.本篇文章会依次讲解这些计算结果是如何得 ...
- [译]Javascript中的闭包(closures)
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- [译]Javascript中的数列
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- [译]Javascript中的for循环
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- [译]Javascript中的do-while循环
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- [译]Javascript中的循环
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- MySQL Cluster测试过程中的错误汇总--ERROR 1296 (HY000)等等
参考资料: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-privilege-distribution.html http://www.cl ...
随机推荐
- CAP理论、BASE理论
从分布式一致性谈到CAP理论.BASE理论 https://www.cnblogs.com/szlbm/p/5588543.html 问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探 ...
- LeetCode 251. Flatten 2D Vector
原题链接在这里:https://leetcode.com/problems/flatten-2d-vector/ 题目: Implement an iterator to flatten a 2d v ...
- I would I were a careless child
I would I were a careless child by George Gordon Byron 1 I would I were a careless child, still dwel ...
- loj 6084.「美团 CodeM 资格赛」跳格子
题目: link 题解: 尽量走\(a\). 只要保证走\(a\)后到达的点一定可以到终点就可以走. 所以从终点开始\(dfs\)出所有能够到达终点的点. 然后再从起点开始\(dfs\)路径即可. 如 ...
- npm init node 通过指令创建一个package.json文件及npm安装package.json
描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...
- JvisualVm添加远程监控
一.Weblogic远程监控 1.首先需要在远程的weblogic的域下面,找到/bin/ setDomainEnv.sh ,需要在此文件下加入如下内容: -Dcom.sun.management.j ...
- BZOJ2565:最长双回文串
浅谈\(Manacher\):https://www.cnblogs.com/AKMer/p/10431603.html 题目传送门:https://www.lydsy.com/JudgeOnline ...
- Centos下安装禅道
1.下载禅道安装包:http://dl.cnezsoft.com/zentao/9.7/ZenTaoPMS.9.7.stable.zbox_64.tar.gz 2.将下载的压缩包解压到/opt目录下: ...
- gitlab init project
Command line instructions Git global setup git config --global user.name "zxpo" git config ...
- 蓝桥杯 算法训练 ALGO-117 友好数
算法训练 友好数 时间限制:1.0s 内存限制:256.0MB 问题描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的.例如: 9的约数和有:1+3=4 ...