자바스크립트에서는 객체 지향 프로그래밍의 핵심인 생성자 함수와 프로토타입 체인을 통해 코드 재사용과 상속을 구현할 수 있습니다. 그러나 때로는 메서드를 호출할 때 예외 상황이 발생할 수 있습니다. 이러한 예외 상황을 처리하는 방법을 알아보겠습니다.
1. try-catch 문을 사용한 예외 처리
가장 일반적인 예외 처리 방법은 try-catch
문을 사용하는 것입니다. 메서드 호출 시 try
블록 안에서 예외가 발생하는지 확인하고, 예외가 발생하면 catch
블록에서 해당 예외를 처리합니다.
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
try {
console.log('Hello, ' + this.name);
} catch (error) {
console.log('Error: ' + error.message);
}
}
var john = new Person('John', 25);
john.sayHello(); // Output: Hello, John
var jane = new Person();
jane.sayHello(); // Output: Error: Cannot read property 'name' of undefined
위의 예제에서 john.sayHello()
은 정상적으로 실행되고 ‘Hello, John’이 출력됩니다. 하지만 jane.sayHello()
을 호출하면 예외가 발생할 것입니다. jane
객체는 생성자 함수에 필요한 인자를 제공하지 않았기 때문에 undefined
를 참조하려고 할 때 예외가 발생합니다. 이 예외를 catch
블록에서 처리하여 예외 상황을 알려줄 수 있습니다.
2. 예외를 던지는 방법
때로는 예외가 발생할 경우 프로그램의 흐름을 제어하는 것보다 예외를 던지는 것이 더 나은 경우도 있습니다. 이렇게 하면 예외를 필요한 시점에 적절히 처리할 수 있습니다.
function Person(name, age) {
if (!name || !age) {
throw new Error('Name and age are required');
}
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log('Hello, ' + this.name);
}
try {
var john = new Person('John', 25);
john.sayHello(); // Output: Hello, John
var jane = new Person();
jane.sayHello();
} catch (error) {
console.log('Error: ' + error.message);
}
위의 예제에서 Person
생성자 함수는 name
과 age
인자가 필요합니다. 만약 이 인자들을 제공하지 않으면 예외를 던집니다. 이로써 예외를 먼저 발생시킨 후에 예외를 처리하는 방식으로 예외를 처리할 수 있습니다.
결론
자바스크립트에서 생성자 함수와 프로토타입 체인을 통해 객체 지향적인 코드 구조를 만들 수 있습니다. 그러나 메서드에서 예외가 발생할 수 있다는 것을 염두에 두고 예외 처리를 구현하는 것이 중요합니다. try-catch
문이나 예외를 던지는 방식을 활용하여 예외 상황을 처리하는 것은 좋은 프로그래밍 습관입니다.