`return new Error()`와 `throw new Error()`는 모두 `Error` 객체를 생성하여 함수 호출자에게 오류를 알리는 방법입니다.
그러나 이 두가지 방법은 약간 다른 결과를 가져옵니다.
return new Error()
- `return new Error()`는 함수의 실행을 중지하지 않습니다.
- `Error` 객체를 반환하며, 이 객체는 함수 호출자에게 전달됩니다.
- 호출자는 반환된 `Error` 객체를 처리허가나, 그냥 무시할 수 있습니다.
throw new Error()
- `throw new Error()`는 함수의 실행을 즉시 중지하고 `Error` 객체를 throw합니다.
- 이것은 호출자에게 예외를 발생시키는 것입니다. 호출자는 예외를 처리해야 합니다.
예를 들어봅시다.
throw
Return
결론적으로, `return new Error()`는 오류가 발생했음을 알리는 것이지만, 함수의 실행을 중지하지는 않습니다. 반면 `throw new Error()`는 예외를 throw하여 함수의 실행을 즉시 중지하고 호출자에게 예외를 발생시킵니다. 일반적으로 예외를 발생시키는 것이 예외 처리를 용이하게 만들어주므로, 오류가 발생할 가능성이 있는 경우 `throw new Error()`를 사용하는 것이 좋습니다.
그럼 throw는 뭘까요?
throw는 ECMAScript 1판부터 있었던 표준으로 자바스크립트에서 예외를 발생시키는데 사용합니다.
자바스크립트는 예외 처리 메커니즘을 가지고 있습니다. 예외는 일반적으로 실행 중에 예기치 않은 상황이 발생했음을 나타냅니다. 이 예외를 처리하지 않으면 프로그램은 종료될 수 있습니다. 따라서 예외 처리는 프로그램의 안정성을 보장하기 위해 중요합니다.
자바스크립트에서 예외는 `throw` 키워드를 사용하여 발생시킬 수 있습니다. `throw`는 예외 객체를 인자로 받아 해당 예외를 발생시킵니다. 예를 들어 다음과 같은 예외를 발생시킬 수 있습니다.
throw new Error("Something went wrong");
`try...catch` 문은 자바스크립트에서 예외를 처리하는 가장 일반적인 방법입니다. `try` 블록에서 예외가 발생하면, 해당 예외를 처리하기 위해 `catch` 블록이 실행됩니다. 예를 들어 다음과 같이 `try...catch`문을 사용하여 예외를 처리할 수 있습니다. `finally` 블록은 예외가 발생하던 발생하지 않던 반드시 실행됩니다. 이를 사용하면 리소스를 정리하거나, 예외 발생과 관계없이 실행되어야 하는 코드를 작성할 수 있습니다.
try {
// some code that may throw an exception
} catch (error) {
console.log(error.messege);
} finally {
// code that should always be executed
}
그렇다면 `try`가 먼저 실행될까요? `finally`가 먼저 실행될까요?
`try`, `catch`가 끝나고 `finally`가 실행됩니다.
`throw`를 사용하여 예외를 발생시키는 것 외에도, 일부 내장된 함수(예, `parseInt()`, `JSON.parse()` 등)는 잘못된 인수가 제공될 경우 자동으로 예외를 throw합니다. 따라서 이러한 함수를 사용할 때는 항상 예외 처리를 고려해야 합니다.
자바스크립트 예외 처리 매커니즘은 프로그램의 안정성과 신뢰성을 보장하는 데 매우 중요합니다. 따라서 예외 처리를 올바르게 이해하고 사용하는 것이 좋습니다.
'TIL(Today I Learned)' 카테고리의 다른 글
[예외 처리3]new Error() vs new Promise.reject() (0) | 2023.03.11 |
---|---|
[예외발생2]Error() vs new Error() (0) | 2023.03.11 |
refresh token발급받기 (0) | 2022.08.23 |
WebSocket (0) | 2022.07.29 |
[Postman] 클릭 한번으로 토큰을 전역변수로 저장하기 (0) | 2022.06.30 |