compilation error错误是什么原因_了解如何使用Try,Throw,Catch和Last处理JavaScript错误...
Javascript中的错误
错误是不可避免的。他们发生了。在本文中,我们将使用try和catch探索JavaScript中的基本错误处理。
打开您的开发人员工具控制台和代码:
- Chrome: Ctrl + Shift + J or Cmd + Opt + J (Mac).
- Firefox: Ctrl + Shift + K or Cmd + Opt + K on (Mac).
Try & Catch语法
我们首先来看一下try和catch语法。基本上我们创建了两个代码块。第一个包含我们将尝试的代码。第二个块用于捕获和处理任何潜在的错误:
try { // 正常处理}catch(error) { // 处理任何潜在错误的代码}
第一个错误
错误可能由于许多原因而发生。为了看看它是什么样的,我们将用拼写错误创建自己的东西。
为了说明这个错误,我们将使用alert()方法。 alert()方法使用指定的方法在浏览器中创建弹出窗口。
首先,让我们创建一个成功的警报。在控制台中键入以下内容:
alert("It is a lovely day");
我们将“意外地”命名我们的方法警报。复制以下代码,看看会发生什么:
alerting("It is a lovely day");
我们得到此错误的原因是因为alerting()方法不存在。通过“意外地”给它错误的名称,我们试图引用一个未定义的函数 - 因此,错误就此诞生了。
好的,但真正发生了什么?
当JavaScript中发生运行时错误时,将创建并抛出一个新的Error对象。此错误对象最多可以包含三个属性:错误,发生错误的文件名以及包含错误的行号。
捕获我们的语法错误
考虑到所有这些,我们可以使用try和catch块来捕获上面的引用错误。我们将使用上面相同的拼写错误代码,这次将它放在try块中。我们将在catch块中调用我们返回的Error对象。这是代码的样子:
try { alerting("It is a lovely day");}catch(error) { console.log(error);}
当我们在浏览器中运行时,我们得到:
虽然结果看起来很相似,但根本不是。我们所做的是控制我们的错误。我们不是让浏览器处理我们的错误,而是自己处理它。我们甚至可以根据错误生成自定义操作。例如,我们可以提醒自定义文本,而不是记录错误:
try { alerting("It is a lovely day");}catch(error) { alert("Uh, Oh, Error");}
结果是:
现在,对于调试或开发人员来说,这并没有那么有用。但在我看来,当涉及到用户的自定义错误消息时,try和catch真的很闪耀。
是时候Throw
Throw允许我们抛出自己的错误并指定错误的名称和消息。这是一个例子:
throw new Error('Yeah... Sorry');
我们可以在try catch块中使用throw,看看会发生什么。请注意,我已将catch中的参数名称更改为e。这个参数可以命名我们想要的任何东西,我刚刚选择了e,因为它是错误的简称:
try { throw new Error('Yeah... Sorry');}catch(e) { console.log(e);}
这是我们得到的:
我们现在用throw创建了自己的错误,并使用catch自己处理它。
Finally… Finally
Finally!我们终于可以探索了。
Finally代表一个代码块,我们可以在try和catch结束后用来执行代码。最终将运行是否抛出错误。 这是完整语法的样子:
try { // Code that we will 'try'}catch(error) { // Code that handles any potential errors}finally { // Code that will run at the end}
为了说明最终代码无论如何都运行,我们可以尝试运行两个不同的代码示例。在第一个,我们将抛出一个错误。在第二个中,不会抛出任何错误:
错误:
try { throw new Error('Yeah... Sorry');}catch(e) {}finally { console.log('finally running');}// finally running
现在没有错误:
try {}catch(e) {}finally { console.log('finally running');}// finally running
如您所见,这两个代码都导致我们的finally块运行,并且最终运行到控制台。
把它们放在一起
这是一个简单的例子,我使用try throw catch,最后在一个代码块中:
在我们的try块中,我们将要求用户在弹出窗口中键入“hello”。如果输入任何其他内容,我们会抛出错误。我们的catch阻止向用户发出此错误警告,最后我们捕获它。这是代码:
try { let hello = prompt("Type hello"); if (hello !== 'hello'){ throw new Error("Oops, you didn't type hello"); }}catch(e) { alert(e.message);}finally { alert('thanks for playing!');}
关键要点
- try — 尝试的代码可能会产生错误
- catch — 将处理任何错误的代码
- throw — 您可以用来抛出自己的自定义错误的关键字
- finally — 无论结果如何,将在try/catch块之后运行的代码
compilation error错误是什么原因_了解如何使用Try,Throw,Catch和Last处理JavaScript错误...相关推荐
- ccf运行错误是什么原因_正压送风机运行中叶轮裂纹产生原因是什么?
正压送风机使用过程有可能会出现叶轮开裂,为了能充分了解风机出现这样状况的原因,我们总结了在运行过程中,造成叶轮裂开的主要原因,希望能通过我们的介绍,能充分了解故障产生的原因,能避免再次出现同样的问题. ...
- pta段错误是什么意思_用Python执行Django数据迁移时报!(1091错误及解决方法)...
前言: 今天为大家带来的内容是用Python执行Django数据迁移时报!(1091错误及解决方法)本文内容具有不错的参考意义,希望在此能够帮助到大家! 前几天在Pycharm 中的Terminal下 ...
- quartus编译错误不支持芯片_硒鼓粉盒芯片不识别、耗材佘量错误、打印机亮红灯问题解决方法...
硒鼓的正确使用方法 一.准备更换新的硒鼓粉盒前,应先把粉盒左右上下来回摇晃几下,再将密封条完全抽出,(作用,主要是因为粉盒长时间没有使用,粉盒内的碳粉已经沉淀,硒鼓在使用前充分摇晃后使到粉盒内的碳粉有 ...
- 应用程序错误电脑黑屏_为什么电脑一开机就黑屏 说应用程序错误程序不能读,按确定后仍然是黑屏...
满意答案 suken0313 2015.01.19 采纳率:48% 等级:7 已帮助:309人 一条命令修复内存不能为"read"或"written"故障 ...
- go 自定义error怎么判断是否相等_「GCTT 出品」Go 系列教程——30. 错误处理
Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! Go 系列教程是非常棒的一套初学者教程,入门就它了. 这是 Golang 系列教程中的第 30 篇.在本章教程中,我们 ...
- socket error 10054错误出现的原因以及解决办法,全网最全没有之一
套接字是客户端-服务器通信的端点. FTP socket error 10054指示远程主机已强制终止或重置FTP客户端的现有连接.并且,用户看到完整的错误消息,如下所示. Upload failed ...
- java code large_Java中的“代码太大”编译错误(“Code too large” compilation error in Java)...
Java中的"代码太大"编译错误("Code too large" compilation error in Java) Java中的代码是否有最大大小? 我写 ...
- socket error 10054错误出现的原因及解决办法,全网最全没有之一
套接字是客户端-服务器通信的端点. FTP socket error 10054指示远程主机已强制终止或重置FTP客户端的现有连接.并且,用户看到完整的错误消息,如下所示. Upload failed ...
- java 主动抛出 段错误_段错误产生的原因~
原文:https://blog.csdn.net/qq_29350001/article/details/53780697 一.什么是段错误? 一旦一个程序发生了越界访问,cpu 就会产生相应的保护, ...
最新文章
- 转帖: eureka vs consul以及其他的一些比较
- Parcelable与Serializable接口的用法和区别
- Laravel 中简约而不简单的 Macroable 宏指令 1
- 【HDOJ】3006 The Number of set
- centos6中创建软raid方法
- MATLAB递归程序的调试方法
- 字符串类型、结构体、共用体、枚举、container宏、内存来源
- 钢琴块2电脑版_风暴魔域2电脑版下载_电脑玩风暴魔域2模拟器_夜神安卓模拟器...
- 基本文件管理,针对Centos7的XFS文件系统备份恢复(需要更改)
- 新visio2019专业版最新功能和激活密钥!
- C语言中abs()用法及其他绝对值函数
- 为什么今年高考数学又出编程题?
- 相机标定——标定图片拍摄规范
- python案例实操_Python 操作 Word 案例
- 关于阅读论文的一些感想
- redis实战 migrate异常NOAUTH Authentication required.
- 2021“设计+”珠宝首饰创新设计展开幕
- 2021年上半年软考真题数据库系统工程师真题
- 给TextView设置颜色选择器selector
- 以太网数据连接器行业现状调研及趋势分析报告
热门文章
- 80-450-024-原理-索引-索引练习
- 【Java】Java调用shell脚本
- 95-136-043-源码-Operator-CoProcessOperator
- 【ES】Es使用 报错 TransportClient llegalstateException : Unsupported transport.type [netty3]
- Spring :读取配置文件(.properties、.yam)相关注解
- Spring: 事务传播机制
- html5 websocket插件,html5实现的WebSocket一个小例子(附代码)
- C语言强化——学生管理系统
- Net学习日记_ASP.Net_一般处理程序_笔记
- 数据结构 | 链表队列(基本操作及图示)