重看Javascript高级程序设计,第17章:错误处理与调试

  1. 理解浏览器报告的错误
  2. 处理错误
  3. 调试Javascriptpt代码
// 结构如下:
			// try{
			// 	//可能会导致错误的代码
			// 	window.someNonexistentFunction()
			// }catch(error){
			// 	//在错误发生时怎么处理
			// 	console.log(error.message)
			// }
			// function a(){
			// 	try{
			// 		return 2
			// 	}catch(err){
			// 		return 1
			// 	}finally{
			// 		return 0
			// 	}
			// }
			// console.log(a())			//0
			
			//几种常见错误类型
			// Error		  基类型,其他错误类型都基于它。很少见,有也是浏览器抛出的,	主要目的是供开发人员抛出自定义错误		
			// EvalError	  是在使用eval()函数发生异常时抛出.非直接调用的方式使用eval属性的值.或者为eval属性赋值.如果没有把eval当函数用.如下: 
			//new eval()	
			//eval = foo
			
			// RangeError     数值超出相应范围时触发,例如:在定义数组时,指定了数组不支持的项数,就会触发。如下:
			// var i1 = new Array(-20)
			// var i2 = new Array(Number.MAX_VALUE)
			
			// ReferenceError 找不到对象的情况下,会提示这个错误,在访问不存在的变量也会出现这个错误,如下:
			// var obj = x;
			
			// SyntaxError	  语法错误的Javascript字符串传入eval函数时,会触发这个错误,如下:
			//eval('a ++ b')
			
			// TypeError	  在js中经常用,变量中保存着意外的类型,或者在访问不存在的方法时,会导致这种错误.原因虽然多种,但归根结底还是由于执行特定于类型的操作时,变量的类型不符合要求导致,如下:
			// var o = new 10;
			// console.log("name" in true)
			// Function.prototype.toString.call("name")
			//最常发生类型错误的情况就是传递给函数的参数事先未尽检查,结果传入类型与预期类型不符.
			
			// URIError		  使用encodeURI和decodeURI,而URI格式不正确就会导致URIError
			
			//想知道错误的类型,可以如下:
			try{
				someFunction()
			}catch(err){
				if(err instanceof TypeError){
					//处理类型错误
					console.log('1')
				}else if(err instanceof ReferenceError){
					//处理引用错误
					console.log('2')
				}else{
					//处理其他错误
					console.log('3')
				}
			}
//遇到throw操作符时,代码会立即停止执行.只有try-catch语句捕获被抛出的值时,才会继续执行
			// throw 12345
			// throw new Error("有什么不好的事情")
			// throw new URIError('12321312')
			//利用原型链给新创建的错误执行name和message
			// function n(message){
			// 	this.name = '错误'
			// 	this.message = message
			// }
			// n.prototype = new Error()
			// throw new n('我的错误')
			// 
			//如果参数不是数组形式就报错
			// function process(val){
			// 	if(!(val instanceof Array)){
			// 		throw new Error("process():参数不是数组形式" )
			// 	}
			// 	val.sort()
			// 	for(var i = 0,len = val.length;i 100){
			// 			return val[i]
			// 		}
			// 	}
			// 	return -1
			// }
			// process(['1','2'])
			
			function g(url){
				var pos = url.indexOf('?')
				if(pos > -1){
					return url.substring(pos + 1)
				}
				return ''
			}
			console.log(g('awsdadwdada?asd'))
			
			console.log(['1'] instanceof Array) 
			
			//JS中发生错误的主要原因如下:
			// 类型转换
			//未充分检测数据类型
			//发送给服务器或从服务器接收到的数据有错误

 

你可能感兴趣的:(Js高程3)