JavaScript基础——兼容性、错误处理
JavaScript基础-错误处理Throw、Try、Catch
- try语句执行可能出错的代码
- catch语句处理捕捉到的错误
throw语句创建自定义错误语句
发生的常见的错误类型
- 可能是语法错误,可能是编码错误或者拼写错误
- 可能是拼写错误或者语言中出现错误(也许是浏览器的差异导致的代码不兼容)
- 还有可能是由于用户的操作引起的错误
当然还能是由于各种其他不可预知的问题
JavaScript抛出错误
- 当错误发生时,当JavaScript引擎出现错误时会停止,并生成一个错误报告
描述这种情况的技术术语是:JavaScript将抛出一个错误
JavaScript测试与捕获
- try语句允许我们执行在运行时进行错误测试的代码
- catch语句允许我们在JavaScript出错时所执行的代码块
try语句和catch语句总是成对出现的
例如:
<!DOCTYPE html>
<html>
<head>
<script>
var txt="";
function message()
{
try
{
adddlert("Welcome guest!");
}
catch(err)
{
txt="There was an error on this page.\n\n";
txt+="Error description: " + err.message + "\n\n";
txt+="Click OK to continue.\n\n";
alert(txt);
}
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()">
</body>
</html>
throw语句
- throw语句允许我们创建自定义错误
- 常见的术语是:创建或者抛出异常(exception)
- 把throw和try还有catch一起使用可以控制程序流,创建自定义的错误
- 语法是:throw exception
- 抛出的对象可以使字符串、数字、逻辑值和对象
<script>
function myFunction()
{
try
{
var x=document.getElementById("demo").value;
if(x=="") throw "empty";
if(isNaN(x)) throw "not a number";
if(x>10) throw "too high";
if(x<5) throw "too low";
}
catch(err)
{
var y=document.getElementById("mess");
y.innerHTML="Error: " + err + ".";
}
}
</script>
<h1>My First JavaScript</h1>
<p>Please input a number between 5 and 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="mess"></p>
使用try-catch-finally
finally里面的语句一定会执行,即使try-catch没有执行,finally最终都会执行的,即使是return返回语句
<!DOCTYPE html>
<html>
<head>
<script>
window.onload = function(){
try{
var x = document.getElementById("hello");
if(!x) throw "this is object is gone!";
}catch(err){
alert(err+" "+typeof err);
}finally{
console.log("这里的代码终究都是执行的!");
}
}
</script>
</head>
<body>
</body>
</html>
函数中有try-catch-finally时候的返回机制
- 一般在函数内部遇见return直接就停止执行函数直接结束
但是假如函数内部有finally即使try中已经执行了return,若是finally中有return的话,还是按照finally的算
错误类型的总结(准确分析错误类型,获取更多错误信息)
- Error,基类型,其他的错误都是继承自该错误的,因此其他错误都共享了一组相同的属性
- Eval错误,EvalError,是在使用eval()函数时被抛出的错误
- 范围错误,RangeError,数值超出一定范围时会抛出
var a=new Array(-10);//Uncaught RangeError: Invalid array length - 变量引用错误,ReferenceError,找不到引用对象时会报出这个错误,通常出现在访问不存在的变量时会发生
- SyntaxError语法错误,表示出现语法错误
- TypeError变量类型不符
URIError,在使用encodeURL()和decodeURL()时会出现这个错误
错误类型的处理,使用instanceof进行检测
<!DOCTYPE html>
<html>
<head>
<script>
function typeError(){
try{
var x = document.querySelects("body");
}catch(err){
if(err instanceof TypeError){
console.log("类型错误");
}
else if(err instanceof ReferenceError){
console.log("引用错误");
}
else if(err instanceof RangeError){
console.log("范围错误");
}
else if(err instanceof SyntaxError){
console.log("语法错误");
}
else if(err instanceof TypeError){
console.log("类型错误");
}else{
console.log("其他错误!");
}
}
}
typeError();
</script>
</head>
<body>
</body>
</html>
throw抛出的不同的对象类型最常用的是:Error通用类型、范围错误RangeError,变量引用错误ReferenceError、变量类型错误TypeError
throw new Error("抛出通用错误");//Uncaught Error: 抛出通用错误
throw new Error(抛出通用错误);//Uncaught ReferenceError,抛出通用错误 is not defined;
throw new SyntaxError("SyntaxError语法错误");
throw new RangeError("RangeError范围错误");
throw new ReferenceError("ReferenceError变量引用错误");
throw new TypeError("TypeError变量类型错误");
注意:构造错误的时候需要给错误信息加上引号,错误信息其实就是string
除了window的Error对象还有错误事件对象
window.onerror = function(message,url,line){ //带有message,url和行号
alert(message);
}
JavaScript基础——兼容性、错误处理的更多相关文章
- JavaScript基础——添加错误处理
JavaScript编程的一个重要组成部分,是添加错误处理来应对可能会出现的问题.默认情况下,如果因为你的JavaScript中的问题二产生了一个代码异常,那么脚本就会失败并且无法完成加载.这通常不是 ...
- 2016.3.17__ JavaScript基础_1__第十二天
Javascript基础 首先说声抱歉. 今日涉及内容难易度不统一,所以很多比較基础的属性直接通过思维导图展示了. 同一时候须要注意,今日思维导图中的内容和笔记中并非一一相应的,请读者自行对比查看. ...
- javascript基础入门知识点整理
学习目标: - 掌握编程的基本思维 - 掌握编程的基本语法 typora-copy-images-to: media JavaScript基础 HTML和CSS 京东 课前娱乐 众人皆笑我疯癫,我笑尔 ...
- JavaScript基础语法资料
JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...
- JavaScript基础
JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- JavaScript 基础回顾——对象
JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...
随机推荐
- Nginx基本配置、性能优化指南
大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能 ...
- 在php中使用jquery uploadify进行多图片上传
jquery uploadify是一款Ajax风格的批量图片上传插件,在PHP中使用jquery uploadify很方便,请按照本文介绍的方法和步骤,为你的PHP程序增加jquery uploadi ...
- PHP使用GD2库画图,图像无法输出解决方法
在CS6编辑环境下,使用php的GD2库绘制图像,在浏览器上输出可能会出现图像无法输出的情况,目前发现两个解决方法:方法1:用记事本写,再另存为utf-8 no bom的格式. 方法2:在代码中添加o ...
- redis 安装启动及设置密码<windows>
redis 1. 安装 1.1 下载解压包,直接解压到任意路径下即可 windows下载地址:ttps://github.com/MSOpenTech/redis/releases 2.启动 2.1 ...
- 插入排序法-java案例详解
/** * 功能:插入排序法 * 基本思想:把n个待排序的元素看成一个有序和无序表,开始时有序表中只包含一个元素, * 无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码 ...
- Struts2的一个入门实例----登录功能
一.搭建环境与测试 1.web.xml文件,配置核心Filter 1: <?xml version="1.0" encoding="UTF-8"?> ...
- 强行在MFC窗体中渲染Cocos2d-x 3.6
[前言] 把Cocos2dx渲染到另一个应用程序框架中的方法,在2.x时代有很多大神已经实现了,而3.x的做法网上几乎找不着.这两天抽空强行折腾了一下,不敢独享,贴出来供大家参考. [已知存在的问题] ...
- Stanford机器学习课程之一——引言
Andrew Ng的Machine Learning课程,在网易公开课上有中文版视频http://v.163.com/special/opencourse/machinelearning.html,六 ...
- Javascript中alert</script>的方法
Javascript中alert</script>的方法: <%@ page language="java" import="java.util.*&q ...
- 关于异常“The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine”的处理
我们在利用SqlBlukcopy技术倒2010 或者2007格式的文件到SqlServer 数据库的时候,会发生如下错误: 原因如下: 1.在用SQL SERVER 2005访问.xlsx文件(off ...