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

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. 创建Jenkins构建触发器,代码提交至gitLab即自动触发构建

    下载所需插件,系统设置-->插件管理,搜索以下两个插件,选择安装 登录gitLab,生成一个Personal Access Tokens 进入Jenkins,添加api token,路径:首页- ...

  2. 11.Redis缓存设计

    11.Redis缓存设计11.1 缓存的收益和成本11.2 缓存更新策略11.3 缓存粒度控制11.4 穿透优化11.5 无底洞优化11.6 雪崩优化11.7 热点key重建优化11.8 本章重点回顾

  3. c++常用小算法

    这篇文章列出了一些简单常用的C++容器算法,C++标准库中事实上提供了很多的算法并且有详细的介绍.如果需要详细的了解这些算法可以 参考C++在线参考手册 algrithm . 1 排序 在 #incl ...

  4. dskinlite(uieasy mfc界面库)使用记录1: schema验证xml

    市场上的MFC第三方库很多,最终选定dskinlite企业版,成熟度比较高,当然价格也略贵. 在2017年仍然使用MFC是有些另类,但特定场景很适用,也适合不愿转型的老程序员. 目前处于学习阶段,欢迎 ...

  5. 大白书中无向图的点双联通分量(BCC)模板的分析与理解

    对于一个无向图,如果任意两点至少存在两条点不重复(除起点和终点外无公共点)的路径,则这个图就是点双联通. 这个要求等价于任意两条边都存在于一个简单环(即同一个点不能在圈中出现两次)中,即内部无割点. ...

  6. dotNet程序员的Java爬坑之旅(三)之spring MVC篇一

    使用maven構建springMVC項目,開發工具為IDEA 一.構建Maven項目,模板為WebApp 二.在pom文件中配置SpringMvc配置(springMvc需要以來servlet ,如本 ...

  7. Java Swing实现展示数据,以及过滤排序

    public class RelationCostctrTable extends DefaultTableModel { public RelationCostctrTable(Vector< ...

  8. Centos7搭建SS以及加速配置的操作记录 (转载)

    原文地址https://www.cnblogs.com/kevingrace/p/8495424.html 部署 Shadowsocks之前,对它做了一个简单的了解,下面先介绍下.一道隐形的墙众所周知 ...

  9. 从知乎首页用户操作入口学习到的CSS技巧 - 合理利用伪元素实现一些装饰样式

    最近在模仿做一个静态的PC版知乎,在模仿的过程中,从知乎工程师的方法中学到了不少知识,比如CSS方面的,以下介绍一个今天学到的伪元素的技巧. 示例 DOM结构为: <div class=&quo ...

  10. Scrapy爬虫框架的学习

    第一步安装 首先得安装它,我使用的pip安装的 因为我电脑上面安装了两个python,一个是python2.x,一个是python3.x,所以为了区分,所以,在cmd中,我就使用命令:python2 ...