EasyClick 老鬼 编程学院
EasyClick 老鬼 编程学院
老鬼编程学院VIP 教程汇总
EasyClick 教程
原生UI 教程展示
原生UI 教程总纲
原生UI VIP 教程目录
原生UI 模版展示
模版一
模板二
模板三
模板四(暂未完成只有界面数据未处理)
模板 悬浮窗 获取点击坐标
模板 进度条
模板 搜索框
模板 卡密验证
模板 登录界面
模板 登录 主页联动
模板 浮窗启停
模板 运行模式检测
模板 搜索模板美化
模板 日期时间模版
模板 动态排版之加载三方应用列表
模板 UI执行 脚本任务显示
模板 旋转特效启停浮窗按钮加UI假启动
模板 对话框大全
模板 自定义对话框大全
模板 复用xml 高级对话框
模板 自定义listview
模板 浮窗日志
模版 自定义悬浮启停按钮
模版 脚本休息全屏
模板 SeekBar组件
模板 任务首页
模版 圆角悬浮窗日志
坐标拾取器
卡片分组模版
模板 定时任务
模板 自定义菜单多页面切换
模板 viewpager 抖音脚本界面
模板 可编辑表格
模板 侧边悬浮菜单弹窗
登录模版 字体引入
番外避坑
EasyClick 原生UI 避坑指南
商用模板
商用模版一
商用模板二
商用模板三
商用模板四
商用模板五
商用模板六
商用模板七
商用模版八(徒弟作品)
商用模版九
商用模版十
商用模版十一(游戏)
商用模版 十二 (小游戏阅读)
商用模版 十三 (小游戏阅读)
商用模版 十四(小游戏)
商用模版 十五(TK)
商用模版十六 (DY)
商用模版十七(徒弟作品)
原生UI xml文件 标签解释
原生UI教程xml扫盲篇
EasyClick 原生UI与Android UI XML的区别
原生UI 之常用控件一
原生UI 之常用控件二
原生UI 公有属性
原生UI之布局
XML 特殊符号转义
原生UI 学习思路
EasyClick auto.js对比
原生和H5的对比
JavaScript基础教程
JavaScript基础教程
JavaScript调用java函数
JavaScript 调用java函数检测服务器连通性
JavaScript中的正则表达式总结
JavaScript 异常处理(try+catch+finally+throw)
常用数据类型检测结果表
JavaScript 常见问题集锦
JavaScript调用java函数获取MP3文件时长
JavaScript判断变量类型
JavaScript 提取数字
JavaScript 正则Replace方法
JavaScript 运算符使用技巧
JavaScript 字符串 转数组
JavaScript取整取余数的方法
JavaScript 数组随机取值
JavaScript 随机生成汉字
JSON 基础
JavaScript 随机生成字符串
JavaScript 正则 常用写法
EasyClick Android相关教程
ADB shell 之 adb shell之am、pm、dpm命令大全
EasyClick adb、shell命令大全
EasyClick 执行 shell命令
EasyClick shell 命令压缩文件
EasyClick shell分割大文件
Android Intent action 介绍
Android FLAG标志位解释
EasyClick Intent 打开应用详情页
EasyClick intent方式安装卸载APP
Intent教学培训
Activity
Android
安卓 版本API 对照表
Java零基础教程展示
EasyClick Android常用文档
EasyClick 常见错误
常见网络返回代码解释
模拟器连接端口汇总
EasyClick官网文档
EC无法停止的问题
模拟器自动获取root权限
夜神截图黑图解决办法
去除Windows文件^M的办法
EC设置为默认输入法
EasyClick 启动APP 替代方法
EasyClick 插件项目问题
EasyClick 热更乱码问题
EasyClick IEC 热更新 问题
EC 编译错误
打包选项和APP 设置属性对比
常用时间戳API
雷电模拟器开启指针
无障碍音量下键停止脚本
EasyClick IOS 常见问题
EasyClick IOS 2.X 环境安装 教程
EasyClick 黑苹果安装教程、资源、坑点处理
MAC OS Monterey 支持机型列表
工作室环境问题
XCODE签名问题
Windows10 系统盘 节省7G以上
EasyClick 远程调试内网穿透工具
IDEA 教程
EasyClick IDEA 教程
EasyClick IDEA 汉化
IDEA 常用快捷键
IDEA 常用开发插件
IDEA 创建多项目
IDEA 恢复历史记录
IDEA 常见问题
EasyClick 安卓Intent URL scheme VIP 教程
付费产品
EasyClick Android 自动化测试 ROM定制
EasyClick bug反馈工具 OSS版
卡密管理系统
卡密二次验证系统
EasyClick BUG 反馈 公共版
云控定制
设备购买
二手手机资源
Android 一手新机货源表
IOS推荐集线器西普莱厂家直供集线器
本文档使用 MrDoc 发布
-
+
首页
JavaScript 异常处理(try+catch+finally+throw)
# JavaScript 异常处理(try+catch+finally+throw) ECMA-262 规范了 7 种错误类型,具体说明如下。其中 Error 是基类,其他 6 种错误类型是子类,都继承 Error 基类。Error 类型的主要用途是自定义错误对象。 Error:普通异常。与 throw 语句和 try/catch 语句一起使用,属性 name 可以读写异常类型,message 属性可以读写详细错误信息。 - EvalError:不正确的使用 eval() 方法时抛出。 - SyntaxError:出现语法错误时抛出。 - RangeError:数字超出合法范围时抛出、 - ReferenceError:读取不存在的变量时抛出。 - TypeError:值得类型发生错误时抛出。 - URIError:URI 编码和解码错误时抛出。 ## try/catch/finally语句 `try/catch/finally `是 JavaScript 异常处理语句。语法格式如下: ```javascript try{ //调试代码块 } catch(e) { //捕获异常,并进行异常处理的代码块 } finally{ //后期清理代码块 } ``` 在正常情况下,JavaScript 按顺序执行 `try` 子句中的代码,如果没有异常发生,将会忽略 `catch` 子句,跳转到 `finally` 子句中继续执行。 如果在 try 子句运行时发生错误,或者使用 throw 语句主动抛出异常,则执行 catch 子句中的代码,同时传入一个参数,引用 Error 对象。 在异常处结构中,大括号不能省略。 ### 示例1 下面示例先在 `try` 子句中制造一个语法错误,然后在 `catch` 子句中获取 `Error` 对象,读取错误信息,最后在 `finally` 子句中提示代码。 ```javascript try { 1 = 1; //非法语句 } catch (error) { //捕获错误 console.log(error.name); //访问错误类型 console.log(error.message); //访问错误详细信息 } finally { //清除处理 console.log("1=1"); //提示代码 } ``` `catch` 和 `finally` 子句是可选的,在正常情况下应该包含 `try` 和 `catch` 子句。 ```javascript try {1 = 1;} catch (error) { } ``` 不管 try 语句是否完全执行,finally 语句最后都必须要执行,即使使用了跳转语句跳出了异常处理结构,也必须在跳出之前先执行 finally 子句。 ### 示例2 下面示例在函数体内设计一个异常处理结构,为每个子句添加一个 `return` 语句。调用函数后,实际返回的是“`finally`”,而不是“`try`”,因为 `finally` 子句必须最后执行,把 `finally` 子句去掉,函数才会返回“try”。 ```javascript function test() { try { return "try"; }catch { return "catch"; }finally { return "finally"; } } console.log(test()); //返回“finally” ``` `try/catch/finally` 语句允许嵌套使用,嵌套的层数不限,同时形成一条词法作用域链。在 try 中发生异常时,JavaScript 会停止程序的正常运行,并跳转到层级最近的 `catch` 子句(异常处理器)。如果没有找到异常处理器,则会沿着作用域链,检查上一级的 `catch` 子句,以此类推,直到找到一个异常处理器。如果在程序中没有找到任何异常处理器,将会显示错误。 ### 示例3 下面代码就是一个多层嵌套的异常结构,在处理一系列的异常时,内层的 `catch` 子句通过将异常抛出,就可以将异常抛给外层的 `catch` 子句来处理。 ```javascript try { //外层异常处理结构 try { //内层异常处理结构 test(); //错误调用 } catch(error) { if (error.name == "ReferenceError") console.log("错误参考"); //如果是异常引用,则提示这样的信息 else throw error; //否则再次抛出一个异常,并把错误信息向上传递 } } catch (error) { //获取内层异常处理结构中抛出的异常 console.log("内层 try/catch 不能够处理这个错误"); } ``` ## throw语句 **throw** 语句能够主动抛出异常,语法格式如下: `throw expression;` **expression** 是任意类型的表达式,一般为 `Error` 对象,或者 `Error` 子类示例。 当执行 `throw` 语句时,程序会立即停止执行。只有当使用 `try/catch` 语句捕获到被抛出的值时,程序才会执行。 ### 示例 下面示例在循环体内设计当循环变量大于 5 时,定义并抛出一个异常。 ```javascript try { for (var i = 0;i < 10;i++) { if (i > 5) throw new Error ("循环变量的值大于 5 了"); //定义错误对象,并抛出异常 console.log(i); } } catch (error) { } //捕获错误,其中error就是new Error() 的实例 ``` 在抛出异常时,JavaScript 也会停止程序的正常执行,并跳转到最近的 `catch` 子句。如果没有找到 `catch` 子句,则会检查上一级的 `catch` 子句,以此类推,直到找到一个异常处理器为止。如果在程序中没有找到任何异常处理器,将会显示错误。 我是Mr-老鬼、QQ1156346325 。交流QQ群:620028786,647082990 **------------------------------------------------版权声明------------------------------------------------------** 本文版权所有~Mr-老鬼 ~转载请注明原文地址 免责声明:本文所有的教程仅限交流学习使用不得用于违法用途,造成的法律后果本人不承担责任。
Mr、老鬼
2021年6月30日 19:19
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码