##1.오류 처리 구문:(js 에는 예외 exception 이라는 개념이 없으며, 모두 오류 error 입니다)
try{
//throw new Error(msg);
//throw '错误';
//throw false;
//throw ...
//throw 연산자의 피연산수에는 아무런 제한이 없으며, 마음대로 던질 수 있습니다
}
catch(err){
//alert(err.message);//message 는 모든 브라우저에서 지원되는 유일한 속성입니다
}
finally{
//
}
주의: [IE7-] 에는 버그가 있습니다: catch 블록이 없으면 finally 블록이 실행되지 않습니다. 따라서 완전한 try-catch-finally 를 사용하는 것을 권장합니다
高程에는 기술상의 오류가 있습니다 (중문판 501 페이지):
독자는 반드시 기억해 두십시오, 코드가 finally 절을 포함하는 한, try 또는 catch 문 블록 내의 return 문은 모두 무시됩니다.
本机 테스트 결과:finally 에 들어가기 전에 마주친 return 은 finally 완료 후에도 return 됩니다. 책에 쓰여 있는 "무시"라는 것이 아니라, 아마도 단순한 애매함일 것입니다.
또한, js 에는 java 의 예외 처리와 같은 비밀이 존재합니다. 예를 들어:
//코드来自 http://www.cnblogs.com/averey/p/4379646.html
function aaa(){
var x = 1;
try {
return ++x;
} catch (err) {
} finally {
++x;
}
return x;
}
(function(){
var y = aaa();
alert(y);//2
})();
자세한 내용은 다음을 참조하십시오:
물론, 이러한 작은 비밀은 알고 있으면 되며, 깊이 파고들 필요는 없습니다
##2.7 가지 오류 타입
-
Error
-
EvalError
-
RangeError
-
ReferenceError
-
SyntaxError
-
TypeError
-
URIError
##3.error 이벤트
브라우저의 오류 보고를 피하는 마지막 방어선으로, 구문은 다음과 같습니다:
window.onerror = function(msg, url, line){
return true;//오류 보고 안 함
}
주의: 위의 DOM0 급 방식만 으로 이벤트 핸들러를 추가할 수 있습니다. DOM2 급 표준을 따르지 않기 때문입니다
주의: 高程中文第三版 506 페이지에 문제가 있습니다. 실제로는 true 를 반환하면 오류 보고하지 않으며, 책에 쓰여 있는 false 를 반환하는 것이 아닙니다. 테스트 코드는 다음과 같습니다:
window.onerror = function(e) {
return true;//Chrome, FF, IE8 은 모두 오류 보고 안 함
//return false;//Chrome, FF 는 오류 보고, IE8 은 오류 보고 안 함
}
'str'.startWith('x');///오류 트리거
##4.몇 가지 상식
-
형 변환과 형 변환 오류를 피하기 위해, 가능한 한===와!==를 사용하여 비교하십시오
-
제어문 내에서는 가능한 한 불리언 값을 사용하고, if(value) 와 같은 구조는 사용하지 마십시오. 자동으로 수행되는 형 변환으로 인해 여러 개의 거짓값이 존재하기 때문입니다:
-
false
-
+0/-0
-
undefined
-
null
-
''/""(빈 문자열)
-
NaN
-
이러한 거짓값들은 예상치 못한 결과를 초래할 수 있습니다.===와!==만 사용하면 false 라는 거짓값만 있게 되어, 의미를 정확하게 표현할 수 있습니다
-
if(value != null) 이나 if(value != undefined) 와 같은 검사는 사용하지 말고, 다음과 같이 해야 합니다:
-
객체 값 검사에는 if(value instanceof Type) 을 사용
-
기본 타입 값 검사에는 if(typeof value === strType) 을 사용
-
-
body 내의 스크립트에서 document.body 관련 DOM 작업 (노드 추가/삭제) 을 수행하지 마십시오. IE 오류를 발생시킬 수 있기 때문입니다
-
외부 js 파일도 js 구문 오류를 일으킬 수 있으며, 오류 정보는 부정확하고 발견하기 어렵기 때문에, 외부 스크립트를 참조하기 전에 충분한 테스트를 수행해야 합니다
-
IE 의 URI 길이 제한은 2048 자 이하이므로, get 으로 post 요청을 대체하여 성능을 최적화할 때, 쿼리 문자열의 길이를 가능한 한 짧게 해야 합니다 (예를 들어 짧은 필드 이름 사용 등)
아직 댓글이 없습니다