Ted's Codding study
Error 객체 본문
JavaScript
Error 객체 Ted93 2024. 5. 26. 16:25
Error 객체
- JavaScript의 모든 예외는 Error 객체 혹은 Error 객체를 상속받은 객체를 통해 표현
- Error 객체에는 여러 속성이 있지만 주로 사용되는 속성
- name: 예외 이름
- message: 예외 메시지
1) 예외 객체
- 예외가 발생하면 예외와 발생된 정보를 확인 할 수 있는 객체
- let myError = new Error("무언가 잘못되었습니다."); - 사용자 정의 에러를 생성 throw myError;
- 예외 객체는 catch 블럭의 괄호 안에 입력됨 - 주로 exception | e라는 식별자를 사용
2) 예외 강제 발생
- throw 키워드를 사용
- 예외를 명시적으로 발생시키는 데 사용
- throw 다음에는 어떠한 값이나 표현식도 작성 가능 - 표현식의 평가 결과가 예외 값으로 사용
3) 단순 예외 발생
throw 'Error2'; // 문자열을 예외로 던짐
throw 42; // 숫자를 예외로 던짐
throw true; // 불리언 값을 예외로 던짐
4) 구체적인 예외 발생 케이스
CASE 1
const array = new Array(999999999999999999999); 이 코드는 자바스크립트에서 정수 크기를 표현하기에 너무 크므로 아래와 같은 에러가 발생할 것임
try {
const array = new Array(999999999999999999999);
} catch (exception) {
console.log(exception); // 예외 객체 자체를 출력
console.log(); // 줄 바꿈
console.log(`예외 이름: ${exception.name}`);
console.log(`예외 메시지: ${exception.message}`);
}
CASE2
function divide(a, b) {
if (b === 0) {
throw '0으로는 나눌 수 없습니다.'; // 사용자 정의 실행 중단
}
return a / b;
}
console.log(divide(10, 2));
console.log(divide(10, 0));
0으로 나누기를 할 때 에러를 던졌고, 아래 콘솔창에 에러 메세지가 나오면서 어플리케이션이 종료 됨
어플리케이션이 강제 종료되지 않게 try-catch 문을 이용
try {
console.log(divide(10, 2));
console.log(divide(10, 0));
} catch (e) {
console.log(e); // error 객체가 아니라, 문자열이 출력
}
5) 프로그래밍 구현 중 비즈니스 로직에 따라 개발자가 코드의 흐름을 제어하기 위해서 적절한 예외를 사용하는 것을 권장
- ex) 회원가입 시 비밀번호 설정을 문자 + 숫자로 8 ~ 10자 이내로 지정
- 그 외로 지정하는 경우 회원가입 로직이 실행되지 않도록 예외를 발생
function text(object) {
if (!object || object.a === undefined || object.b === undefined) {
throw new Error(
'함수를 호출할 때 object 인자와 그의 a및 b속성을 지정해야 합니다.'
);
}
console.log(object.a + object.b);
}
text({ a: 5, b: 10 });
text({ a: '테', b: '드' });
text({ a: '테'}); // Error
text(); // Error
올바르게 객체 안에 a와 b를 잘 전달하는 경우는 실행이 잘 되지만 그 이외의 경우는 어플리케이션이 강제 종료 됨
어플리케이션이 강제 종료되지 않게 try-catch 문을 이용
try {
text({ a: 5, b: 10 });
text({ a: '테', b: '드' });
text({ a: '테' });
text();
} catch (e) {
console.error('에러 발생: ', e.message);
}
console.log('다음 로직');
노션으로 보고 싶다면?
https://short-echidna-b16.notion.site/Error-2d56813a464443e8891282962b3d7cee?pvs=4