相信在实际项目中,你可能经常会看到类似下面的代码

try {
// 尝试执行代码块
}
catch(err) {
// 捕获错误的代码块
}
finally {
// 结果如何都会执行的代码块
}

  简单来说上面的代码是用于处理代码中可能出现的错误信息

  try{} 里的代码表示要执行的代码

  catch{} 用于捕获 try{} 里代码执行时报的错误信息

  finally{} 不管怎样都会执行的代码

  下面我会列出一个实例,有时候文字描述不太直观,不便于理解,把相关代码敲一边,试着去理解,或许原先不明白的地方就迎刃而解了

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body> <button id="btn">点我</button>
<p id="message"></p> <script>
var btn = document.getElementById("btn");
btn.addEventListener("click", clickMe); function clickMe() {
var y = document.getElementById("message"); try{
show();
}
catch(err){
y.innerHTML = "错误:" + err;
}
} // function show() {
// alert(1);
// }
</script>
</body>
</html>

  注:上面实例如下图,点击按钮以后执行 clickMe() 方法里的 show()方法,因为没有定义该方法,所以报错,提示该方法没有定义

  

  下面在通过一个实例介绍当 catch{} 捕获到错误信息,通过 throw 创建自定义消息的用法

<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
</head> <body>
<p>请输入 5 和 10 之间的一个数:</p> <input type="text" id="data" value="" /> <button id="btn">检查输入</button> <p id="message"></p> <script>
var btn = document.getElementById("btn");
btn.addEventListener("click", myFunction); function myFunction() {
var data = document.getElementById("data").value;
var message = document.getElementById("message");
message.innerHTML = ""; try {
if (data === 0) {
throw "值不能为0";
} else if (isNaN(data)) {
throw "值不能为非数字";
} else if (data < 5) {
throw "值不能小于5";
} else if (data > 10) {
throw "值不能大于10";
} else {
throw "你输入的值没有问题";
}
}
catch(err) {
message.innerHTML = "输入的值:" + err;
}
}
</script>
</body> </html>

  补充:

  ①:try 和 catch  (必须一起使用)

  ②:try 和 catch 和 throw  (如果要创建自定义消息,就需要一起使用)

  ③:try 和 catch 和 finally (finally不是必须的,可选的)

  

2个简单实例让你快速理解try-catch的用法的更多相关文章

  1. 字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8

    原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象 ...

  2. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序

    SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论   异常汇总:http://www ...

  3. 数据可视化之DAX篇(十六)如何快速理解一个复杂的DAX?这个方法告诉你

    https://zhuanlan.zhihu.com/p/64422393 经常有朋友提出一个问题,然后我给出一个DAX之后,TA又不是很理解,反复多次沟通才能把一个表达式讲清楚.或者TA自己写了一个 ...

  4. Hibernate(二)__简单实例入门

    首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...

  5. 【转】快速理解Kafka分布式消息队列框架

     from:http://blog.csdn.net/colorant/article/details/12081909 快速理解Kafka分布式消息队列框架 标签: kafkamessage que ...

  6. Docker初步认识安装和简单实例

    前话 问题 开发网站需要搭建服务器环境,FQ官网下载软件包,搭建配置nginx,apache,数据库等.官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步 ...

  7. 简单实例一步一步帮你搞清楚MVC3中的路由以及区域

    我们都知道MVC 3 程序的所有请求都是先经过路由解析然后分配到特定的Controller 以及 Action 中的,为什么这些知识讲完了Controller Action Model 后再讲呢?这个 ...

  8. Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考

    Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考 //System.setProperty("webdriver.firefox.bin" ...

  9. C++ 容器的综合应用的一个简单实例——文本查询程序

    C++ 容器的综合应用的一个简单实例——文本查询程序 [0. 需求] 最近在粗略学习<C++ Primer 4th>的容器内容,关联容器的章节末尾有个很不错的实例.通过实现一个简单的文本查 ...

随机推荐

  1. c++11新标准for循环和lambda表达式

    :first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-previ ...

  2. Angular中不同的组件间传值与通信的方法

    主要分为父子组件和非父子组件部分. 父子组件间参数与通讯方法 使用事件通信(EventEmitter,@Output): 场景:可以在父子组件之间进行通信,一般使用在子组件传递消息给父组件: 步骤: ...

  3. Hello The Merciless World!

    这里是一名FJ蒟蒻OIer的Blog,ID在上面自己不会看嘛QAQQQ是GldHkkowo(很随性的名字w 联系方式:QQ:735900335 加 Q Q 看 蒟 蒻 WA 题 爱好? 死宅的爱好是什 ...

  4. eclipse创建scrapy项目

    1. 您必须创建一个新的Scrapy项目. 进入您打算存储代码的目录中(比如否F:/demo),运行下列命令: scrapy startproject tutorial 2.在eclipse中创建一个 ...

  5. oo第八次作业

    oo第八次作业 第五次作业分析: 1.度量图: 2.类图: 第五次作业由于是第一次接触多线程,所以导致自己的经验不足,因此最终也没有完成作业,到最后任然不能实现三部电梯的有效调度,所以导致了这次作业的 ...

  6. java之路 数据类型-常量

    class Demo1{ public static void main(String[] args){ //数据类型 类名 = 初始值 int age = 10; int age1 = 20; Sy ...

  7. Altium Designer 16 问题解决

    1:同一个工程中,不同原理图里的网络标号不能关联起来 解决--->   选择  工程->工程参数->网络识别符范围 -> GLOBAL 2:PCB中影藏显示相应Net的飞线 解 ...

  8. 面向对象(特殊成员 组合 self)

  9. [html]CSS中的margin、border、padding区别

    图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层. ...

  10. 浅谈JS面向对象

    浅谈JS面向对象 一 .什么是面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了.注重代码的过程部分. 二.什么是面向对象 最先出现在管理学 ...