프로그램을 실행하는 동안 필연적으로 오류가 발생하며, 오류 이후의 실행 결과가 잘못된 경우가 많습니다. 따라서 실행 중 오류가 발생한 프로그램은 대개 강제 종료됩니다. 런타임 오류를 집합적으로 예외라고 합니다. 오류가 발생할 때 이를 처리할 수 있는 기회를 얻기 위해 JavaScript는 예외 처리 문을 제공합니다. try-catch, try-catch-finally 및 throw가 포함되어 있습니다.
try-catch 문
try{ tryStatements } catch(exception){ catchStatements }
매개변수 설명:
tryStatements: 필수입니다. 오류가 발생할 수 있는 일련의 명령문입니다.
예외: 필수. 오류가 발생했을 때 오류 개체를 참조하는 데 사용된 변수 이름입니다.
catchStatements: 선택 사항입니다. tryStatements에서 발생하는 오류를 처리하는 데 사용되는 오류 처리 문입니다.
코딩을 할 때, 오류가 발생할 수 있는 문장은 대개 try 블록의 중괄호 안에 적고, 그 뒤의 catch 블록에서 오류를 처리합니다. 오류 정보는 예외 참조를 통해 액세스할 수 있는 오류 개체(Error 개체)에 포함되어 있습니다. 오류 객체의 오류 정보를 기반으로 처리 방법을 결정합니다.
<script type="text/javascript"> try{ var n = error; //人为引发一个错误,error未定义就使用 } catch(e){ alert((e.number&0xFFFF) + "号错误:" + e.description); //错误处理:仅输出错误信息 } </script>
이 코드 조각은 try-catch 구조를 사용하여 프로그램 런타임 오류를 처리하고 4행에서는 인위적으로 오류를 발생시킵니다. 6~9행의 catch 블록은 오류를 잡아서 처리합니다.
팁: JavaScript 오류는 런타임 오류 및 구문 오류입니다. 런타임 오류는 실행 프로세스 중에 발견됩니다.
try-catch-finally 문
try{ tryStatements; } catch( exception ){ handleStatements; } finally{ fianllyStatements; }
매개변수 설명:
tryStatements: 필수, 예외를 일으킬 수 있는 문입니다.
handlerStatements: 선택 사항, 예외 처리 문.
fianllyStatements: 선택 사항이며 다른 프로시저 실행 후 무조건 실행되는 문입니다.
오류가 발생하지 않더라도 finally 블록의 명령문은 마지막에 실행되며 일반적으로 리소스 정리 코드가 여기에 배치됩니다.
Apple 이름이 포함된 배열을 순회하는 동안 예외가 인위적으로 발생합니다.
<script type="text/javascript"> try{ var fruit = new Array("鸭梨","苹果","葡萄","李子"); for( n=0;n<fruit.length;m++) { document.write(fruit[n] + ""); } } catch( e ) { alert( (e.number&0xFFFF) + "号错误:" + e.description ); } finally{ fruit = null; alert("fruit="+fruit+"已经断开fruit数组的引用!"); } </script>
이 코드 조각의 5행에서는 정의되지 않은 변수 m을 사용하여 인위적으로 예외를 트리거합니다. 11~13행에서는 예외를 포착하고 처리합니다. 14~18행의 finally 블록은 리소스를 정리합니다. 이 문은 과일 배열이 차지하는 리소스가 누출되지 않도록 보장하기 위해 무조건 실행됩니다.
throw문
여러 예외 처리 문을 중첩할 수 있습니다. 여러 구조가 중첩된 경우 내부 계층의 try-catch 문이 예외 자체를 처리할 의도가 없으면 해당 구조를 던질 수 있습니다. 부모 try-catch 문은 자식이 던진 예외를 받을 수 있으며, 던지는 작업에서는 throw 문을 사용합니다.
표정을 던지다;
표현식의 값은 오류 메시지 객체로 전달되며, 이는 catch 문에 의해 캡처됩니다. throw 문은 예외가 발생하려는 모든 곳에서 사용할 수 있습니다.
일반적으로 0은 제수로 사용할 수 없으므로 예외를 정의하고 제수가 0이면 예외를 던질 수 있습니다.
<script> try{ var dividend = 100; //被除数 var parts = 0; //除数 if( parts == 0){ //如果除数为0则抛出异常 throw "Error:parts is zero"; //抛出异常 } alert("每人" + dividend/parts + "份"); //输出提示信息 } catch(e){ //此处将捕获try块中抛出的异常 alert(e); //用对话框输出错误对象的信息 } </script>
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.