Java 언어와 마찬가지로 JavaScript도 throw 문을 통해 예외를 발생시킬 수 있습니다. Java 언어와 달리 JavaScript는 오류 객체뿐만 아니라 throw 문을 통해 모든 유형의 값을 던질 수 있습니다.
시도해 보세요{
"원시 메시지"를 던집니다.
}catch(메시지){
console.log(message);//원시 메시지
console.log(메시지 유형);//string
}
시도해 보세요{
42를 던져보세요;
}catch(코드){
console.log(코드);//42
console.log(코드 유형);//번호
}
Java 언어와 마찬가지로 어떤 catch 문에서도 예외가 포착되지 않으면 결국 사용자에게 예외가 발생합니다.
시도해 보세요{
throw 42;//오류: 42
가 발생합니다.
}드디어{
}
발생한 예외를 포착하기 위해 JavaScript는 try/catch/finally 문도 사용합니다. 사용 규칙은 다음과 같습니다. try는 필수이고 catch 및 finally는 선택적 문이지만 적어도 catch 및 finally 중 하나가 나타나야 합니다.
catch 문에서 매개변수 e(또는 다른 합법적인 변수 이름)를 정의하여 발생한 예외 값을 저장할 수 있습니다. catch 문 내에서 이 매개변수를 지역 변수로 사용할 수 있습니다. JavaScript의 다른 변수 사용과 달리 catch 문의 매개변수 변수는 catch 문 내에서만 유효합니다(변수의 범위는 catch 문으로 제한됩니다).
finally 문의 경우 try에서 예외가 발생했는지 여부에 관계없이 finally의 코드가 실행됩니다. 세부정보는 다음과 같습니다.
1. try 문이 실행되면 예외가 발생하지 않습니다.
2. try에서는 예외가 발생하지 않지만, break, continue, return 문 실행으로 인해 try 코드가 종료되면 finally에 있는 코드가 실행됩니다.
3. try에서 예외가 발생합니다. catch 문에서 예외를 처리한 후 finally의 코드가 실행됩니다.
4. try에서 예외가 발생했지만, catch 문이 없어 예외를 계속 위로 던져야 하는 경우 finally에 있는 코드가 실행됩니다. catch 문이 없으면 JavaScript는 먼저 finally에서 코드를 실행한 다음 계속해서 예외를 발생시킵니다.
finally 코드에서 break, continue 또는 return 문이 나타나면 JavaScript는 catch 문이 없더라도 try 코드에 존재할 수 있는 break, continue 또는 return 문에 관계없이 이러한 문을 직접 실행합니다. 예외가 발생하면 JS는 예외 보고 정보도 삭제하고 finally 코드에서 break, continue 또는 return 문을 계속 실행합니다. 마찬가지로 finally 코드에서도 예외가 발생하면 JavaScript는 try 코드의 모든 break, continue 또는 return 문을 삭제하고 가능한 예외 보고 동작도 삭제하며 finally 코드에서만 예외를 발생시킵니다.