먼저 예시를 살펴보겠습니다
<input id='b1' type='button' value='按钮'/> <script> window.onload=function(){ var oBtn=document.getElementById("b1"); function mto(){ alert("123"); }; try //非IE { oBtn.attachEvent("onclick",mto,false); } catch(e)//IE { oBtn.addEventListener("click",mto,false); } }; </script>
참고:
addEventListener와 attachmentEvent의 차이점은 첫 번째 매개변수가 전자이고 후자는 onclick입니다.
addEventListener는 해당 요소의 요소 범위에서 실행됩니다
attachEvent는 전역 범위(this=window)에서 실행됩니다
Try...Catch 문
try...catch는 코드의 오류를 테스트할 수 있습니다. try 섹션에는 실행해야 하는 코드가 포함되어 있고, catch 섹션에는 오류가 발생할 때 실행되는 코드가 포함되어 있습니다.
구문:
try { //在此运行代码 } catch(err) { //在此处理错误 }
참고: try...catch에는 소문자를 사용하세요. 대문자가 잘못됩니다.
try...catch...finally 문
JScript에 대한 오류 처리를 구현합니다.
try { tryStatements} catch(exception){ catchStatements} finally { finallyStatements}
=========================
매개변수
필수 옵션입니다. 잘못된 진술이 발생할 수 있습니다.
예외
필수 옵션입니다. 임의의 변수 이름. 예외의 초기화 값은 발생한 오류의 값입니다.
catch문
선택 과목. 연결된 tryStatement 에서 발생하는 오류를 처리하는 문입니다.
finally문
선택 과목. 다른 모든 프로세스가 발생한 후에 무조건 실행되는 명령문입니다.
설명
try...catch...finally 문은 코드 실행을 유지하면서 특정 코드 블록에서 발생할 수 있는 일부 또는 모든 오류를 처리하는 방법을 제공합니다. 프로그래머가 처리하지 않는 오류가 발생하면 JScript는 마치 오류 처리가 없었던 것처럼 사용자에게 일반적인 오류 메시지만 제공합니다.
예
try { print("Outer try running.."); try { print("Nested try running..."); throw "an error"; } catch(e) { print("Nested catch caught " + e); throw e + " re-thrown"; } finally { print("Nested finally is running..."); } } catch(e) { print("Outer catch caught " + e); } finally { print("Outer finally running"); } // Windows Script Host 作出该修改从而得出 WScript.Echo(s) function print(s){ document.write(s); }
중첩해서 실행해 보세요...
중첩된 캐치에 오류가 발생했습니다
드디어 Nested가 실행됩니다...
외부 캐치가 잡혔을 때 오류가 다시 발생했습니다
드디어 아우터 실행
var array = null; try { document.write(array[0]); } catch(err) { document.writeln("Error name: " + err.name + ""); document.writeln("Error message: " + err.message); } finally{ alert("object is null"); }
프로그램 실행 과정
1. array[0]을 사용하면 array가 생성되지 않으므로 array는 빈 객체입니다. 프로그램에서 array[0]을 호출하면 null 예외가 생성됩니다.
2. catch(err) 문은 이 예외를 캡처하고 err.name을 통해 오류 유형을 인쇄하고, err.message는 오류 세부 정보를 인쇄합니다
.
3. finally는 자바의 finally와 유사하며 예외 유무에 관계없이 실행됩니다.
이제 Error.name의 6개 값에 해당하는 정보를 요약해 보겠습니다.
1. EvalError: eval()의 사용이 정의와 일치하지 않습니다.
2. RangeError: 값이 범위를 벗어났습니다
3. ReferenceError: 잘못되었거나 인식할 수 없는 참조 값
4. SyntaxError: 구문 분석 오류가 발생했습니다
5. TypeError: 잘못된 피연산자 유형
6. URIError: URI 처리 기능의 부적절한 사용