JavaScript處理錯誤
阿新 • • 發佈:2019-01-11
1.錯誤型別: [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.//RangeError、ReferenceError、TypeError、URIError 02.try{ 03. someFunction(); 04.}catch(error){ 05. if(error instanceof TypeError){ 06. //處理型別錯誤 07. }else if(error instanceof ReferenceError){ 08. //處理引用錯誤 09. }else if(error instanceof RangeError){ 10. //處理超出範圍錯誤 11. }else if(error instanceof URIError){ 12. //處理URI格式錯誤 13. }else{ 14. //處理其他型別錯誤 15. } 16.} 2.自定義錯誤型別: [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.//自定義錯誤型別 02.function CustomError(message){ 03. this.name="CustomError"; 04. this.message=message; 05.} [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.CustomError.prototype=new Error(); 02.throw new CustomError("我的資訊"); 3.丟擲錯誤的時機 [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.function process(values){ 02. if(!(values instanceof Array)){ 03. throw new Error('process():引數必須是一個數組。'); 04. } 05. values.sort(); 06. for(var i=0,len=values.length;i<len;i++){ 07. if(values[i]>100){ 08. return values[i]; 09. } 10. } 11. return -1; 12.} 4.避免型別轉換錯誤 [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.//避免在流控制語句中使用非布林值 02.function concat(str1,str2,str3){ 03. var result=str1+str2; 04. if(typeof str3=="string"){ 05. result+=str3; 06. } 07. return result; 08.} 5.避免資料型別轉換錯誤 [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.//基本型別的值應該用typeof來檢測 02.function getQueryString(url){ 03. if(typeof url=="string"){ 04. var pos=url.indexOf("?"); 05. if(pos>-1){ 06. return url.substring(pos+1); 07. } 08. } 09.} 10.//物件的值應該使用instanceof來檢測 11.function reverseSort(values){ 12. if(values instanceof Array){ 13. values.sort(); 14. values.reverse(); 15. } 16.} 6.避免通訊錯誤 [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.//避免通訊錯誤:對於查詢字串,必須要使用encodeURIComponent()方法 02.function addQueryStringArg(url,name,value){ 03. if(url.indexOf('?')==-1){ 04. url+='?'; 05. }else{ 06. url+='&'; 07. } 08. url+=encodeURIComponent(name)+'='+encodeURIComponent(value); 09. return url; 10.} [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.var url="http://www.somedomain.com"; 02.var newUrl=addQueryStringArg(url,'redir','http://www.somedomain.com?a=b&c=d'); 7.把錯誤記錄到伺服器 [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.//把錯誤記錄到伺服器 02.function logError(sev,msg){ 03. var img=new Image(); 04. img.src='log.php?sev='+encodeURIComponent(sev)+'&msg='+encodeURIComponent(msg); 05.} [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片01.for(var i=0,len=mods.length;i<len;i++){ 02. try{ 03. mods[i].init(); 04. }catch(ex){ 05. logError('非致命錯誤','模組初始化失敗:'+ex.message); 06. } 07.}