[250124 금요일]
과제를 진행하면서 예외처리를 해야하는데 어떤 것들을 해야 하는것 인가...
떠오르는 예외처리는 많지 않아서 과제를 하면서 찾아봤다.
- 친절한 피드백 제공: 사용자에게 문제를 명확히 알라고 해결 방법 제시.
- 다양한 테스트 케이스 : 다양한 입력값에 대해서 검증하여 안정성 확보.
- 보안 고려: 사용자 입력값을 신뢰하지 말고 항상 검증.
작성한 코드와 목적에 따라서 예시코드와는 다르게 사용 되겠지만, 알아두면 다음 프로젝트때 참고 할 수 있도록 정리해본다.
// 숫자 입력 형식 오류
function validateNumber(input) {
if (isNaN(input)) {
throw new Error("숫자를 입력해야 합니다.");
}
return true;
}
// 날짜 형식 오류 (yyyy-mm-dd)
function validateDate(input) {
const datePattern = /^\d{4}-\d{2}-\d{2}$/;
if (!datePattern.test(input)) {
throw new Error("날짜는 yyyy-mm-dd 형식이어야 합니다.");
}
return true;
}
try {
validateNumber("abc"); // Error: 숫자를 입력해야 합니다.
validateDate("2023/01/01"); // Error: 날짜는 yyyy-mm-dd 형식이어야 합니다.
} catch (e) {
console.error(e.message);
}
function validateMedal(medal) {
if (medal < 0 || medal > 99) {
throw new Error("메달의 갯수는 0에서 99 사이여야 합니다.");
}
return true;
}
try {
validateMedal(110); // Error: 메달의 갯수는 0에서 99 사이여야 합니다.
} catch (e) {
console.error(e.message);
}
function validateNotEmpty(input) {
if (!input.trim()) {
throw new Error("입력값이 비어있습니다.");
}
return true;
}
try {
validateNotEmpty(""); // Error: 입력값이 비어있습니다.
} catch (e) {
console.error(e.message);
}
function validateRequiredFields(data, requiredFields) {
requiredFields.forEach(field => {
if (!data[field]) {
throw new Error(`${field} 필드는 필수입니다.`);
}
});
return true;
}
const formData = {
name: "John",
email: "",
};
try {
validateRequiredFields(formData, ["name", "email", "age"]); // Error: email 필드는 필수입니다.
} catch (e) {
console.error(e.message);
}
function validateDataType(input, expectedType) {
if (typeof input !== expectedType) {
throw new Error(`입력값은 ${expectedType}이어야 합니다.`);
}
return true;
}
try {
validateDataType(123, "string"); // Error: 입력값은 string이어야 합니다.
} catch (e) {
console.error(e.message);
}
const existingEmails = ["test@example.com", "hello@example.com"];
function validateUniqueEmail(email) {
if (existingEmails.includes(email)) {
throw new Error("이미 사용 중인 이메일입니다.");
}
return true;
}
try {
validateUniqueEmail("test@example.com"); // Error: 이미 사용 중인 이메일입니다.
} catch (e) {
console.error(e.message);
}
function validateStringLength(input, maxLength) {
if (input.length > maxLength) {
throw new Error(`입력값은 ${maxLength}자 이하이어야 합니다.`);
}
return true;
}
try {
validateStringLength("This is a very long text", 10); // Error: 입력값은 10자 이하이어야 합니다.
} catch (e) {
console.error(e.message);
}
위 사항들 외에도 여러 예외처리들이 있겠지만, 작업해본 프로젝트들에서는 사용해 봤던 예외처리 했었던 케이스를 기록해뒀다.
이런 예외 처리 케이스들은 필요해서 사용했을 때, 그리고 웹페이지를 이용하면서 등장할 때 자료들을 잘 모아뒀다가 나중에 필요할 때 꺼내 써야지!