js 오류 허용 설명, js 오류가 발생하더라도 오류 메시지가 표시되지 않습니다(브라우저 오른쪽 하단에 노란색 삼각형 기호가 표시되는 것을 방지하기 위해 그렇지 않으면 사용자 경험이 저하됩니다).
다음과 같이 코드 코드를 복사합니다.
window.onerror=function(){return true;}
다음은 개발자가 문제를 쉽게 찾을 수 있도록 js 예외 정보를 얻는 것입니다.
1, 시도...잡아...
다음과 같이 코드 코드를 복사합니다.
<스크립트 유형="텍스트/자바스크립트">
var txt=""
함수 메시지()
{
노력하다
{
addlert("손님을 환영합니다!")
}
잡다(err)
{
txt="이 페이지에 오류가 있습니다./n/n"
txt+="이 페이지를 계속 보려면 "확인"을 클릭하세요./n"
txt+="홈페이지로 돌아가려면 "취소"를 클릭하세요./n/n"
if(!확인(txt))
{
document.location.href="/index.html"
}
}
}
</script>
2, 던져
다음과 같이 코드 코드를 복사합니다.
<스크립트 유형="텍스트/자바스크립트">
var x=prompt("0에서 10 사이의 숫자를 입력하세요:","")
노력하다
{
만약(x>10)
"Err1"을 던져라
그렇지 않은 경우(x<0)
"Err2"를 던져라
그렇지 않은 경우(isNaN(x))
"Err3"을 던져라
}
포수)
{
if(er=="Err1")
Alert("오류! 값이 너무 큽니다!")
if(er == "Err2")
Alert("오류! 값이 너무 작습니다!")
if(er == "Err3")
Alert("오류! 값이 숫자가 아닙니다!")
}
</script>
3,오류 발생 시:
다음과 같이 코드 코드를 복사합니다.
<스크립트 유형="텍스트/자바스크립트">
onerror=처리 오류
var txt=""
함수 핸들Err(msg,url,l)
{
txt="이 페이지에 오류가 있습니다./n/n"
txt+="오류:" + msg + "/n"
txt+="URL: " + URL + "/n"
txt+="행:" + l + "/n/n"
txt+="계속하려면 "확인"을 클릭하세요./n/n"
알림(txt)
true를 반환
}
함수 메시지()
{
addlert("손님을 환영합니다!")
}
</script>
js의 예외 처리
예외 처리를 위해 JavaScript에서 try...catch를 사용할 수 있습니다. 예를 들어:
try { foo.bar();} catch (e) { Alert(e.name + ": " + e.message);}
현재 우리가 받을 수 있는 시스템 예외에는 주로 다음 6가지 유형이 포함됩니다.
EvalError: eval()에서 코드 실행 중 오류가 발생할 때 발생합니다.
RangeError: 숫자 변수나 매개변수가 유효한 범위를 벗어날 때 발생합니다.
ReferenceError: 유효하지 않은 참조를 역참조할 때 발생합니다.
SyntaxError: eval()에서 코드를 구문 분석하는 동안 구문 오류가 발생할 때 발생합니다.
TypeError: 변수나 매개변수가 유효한 유형이 아닐 때 발생
URIError: encodeURI() 또는 decodeURI()에 잘못된 매개변수가 전달되면 발생합니다.
위의 6개 예외 개체는 모두 Error 개체에서 상속됩니다. 이들은 모두 다음 두 가지 구성 방법을 지원합니다.
new Error();new Error("예외 정보");
예외를 수동으로 발생시키는 방법은 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
노력하다 {
새로운 오류 발생("앗!");}
잡기 (e) {
Alert(e.name + ": " + e.message);}
예외 정보의 유형을 확인하려면 catch에서 수행할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
노력하다 {
foo.bar();
} 잡기 (e) {
if (e EvalError 인스턴스) {
Alert(e.이름 + ":" + e.메시지);
} else if(예: RangeError 인스턴스) {
경고(e.이름 + ": " + e.메시지) }
//등
}
오류에는 다음과 같은 주요 속성이 있습니다.
설명: 오류 설명(IE에서만 사용 가능)
fileName: 오류의 파일 이름(Mozilla에서만 사용 가능)
lineNumber: 오류가 발생한 줄 수(Mozilla에서만 사용 가능)
message: 오류 메시지(IE의 설명과 동일)
이름: 오류 유형.
번호: 오류 코드(IE에서만 사용 가능)
stack: Java의 Stack Trace와 같은 오류 스택 정보(Mozilla에서만 사용 가능)
따라서 오류 메시지를 더 잘 이해하기 위해 catch 부분을 다음 형식으로 변경할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
노력하다 {
foo.bar();
} 잡기(e) {
if (browserType != BROWSER_IE) {
Alert("이름: " + e.name + "메시지: " + e.message + "lineNumber: " + e.lineNumber + "fileName: " + e.fileName + "stack: " + e.stack);
} 또 다른 {
Alert("이름: " + e.name + "errorNumber: " + (e.number & 0xFFFF) + "message: " + e.message "); } } "
JavaScript의 throw 명령은 실제로 어떤 개체라도 던질 수 있으며, 이 개체를 catch에서 받을 수 있습니다. 예를 들어:
다음과 같이 코드 코드를 복사합니다.
노력하다 {
throw new Date(); // 현재 시간 객체를 던집니다. } catch (e) { Alert(e.toLocaleString()) // 현재 시간을 표시하기 위해 로컬 형식을 사용합니다.
}