안녕하세요! 피피아노입니다! 🎵
이번 포스팅에서는 Swift에서 예외처리(Exception Handling)를 하는 방법에 대해서 한 번 정리를 해보려고 합니다!
예외 처리란?
예외처리는 프로그래밍을 하다가 예기치 않은 문제가 발생했을 때, 이를 적절히 처리하고 프로그램이 계속 실행될 수 있도록 돕는 역할을 합니다.
말 그대로 예외적인 부분, 즉 오류를 처리하는 거죠!
'예외처리'라는 말은 처음 들어보시는 분들도 계실 수도 있어서 이를 좀 더 쉽게 이해할 수 있도록 일상생활에서의 예를 들어 설명해볼게요.
예외처리는 우리의 일상생활에서 안전장치나 보험같은 역할을 합니다. 예상치 못한 사고나 문제가 발생했을 때, 그 상황을 처리하고 본래의 흐름으로 돌아갈 수 있도록 돕는 것이죠.
이해가 되셨나요?
예외처리의 개념을 알았으니 특징에 대해서 살펴보겠습니다!
예외처리의 특징
Swift에서는 'try', 'catch', 'throw', 'throws', 'do'라는 키워드를 사용하여 예외처리를 합니다.
- throws: 함수가 오류를 발생시킬 수 있다는 것을 나타내는 키워드입니다. throw는 '던지다'라는 뜻이 있는데요, 함수를 선언할 때 이 throws 키워드를 사용해 '이 함수는 오류를 던질 수 있어요'라는 것을 알립니다.
- do - catch: 오류가 발생했을 때 이를 처리하는 키워드입니다. 'do' 블록 안에는 오류를 발생시킬 수 있는 'try' 코드를 작성하고, 'catch' 블록에서는 이 오류를 잡아내어 처리합니다.
- try: 오류를 발생시킬 수 있는 코드 앞에 위치하는 키워드입니다. '시도하다'라는 뜻이 있죠. 오류가 발생할 수도 있는 코드를 시도해보고, 오류가 발생하면 그 때 'catch'로 가서 처리합니다.
좀 더 쉽게 정리해보자면!!
throws는 에러가 발생 했을 때 오류를 던지는 역할!
do - catch는 일단 해보고(do) 만약 에러가 발생하면 catch한테 보내는 역할!
try는 일단 시도해보고 오류가 생기면 catch한테 보내는 역할!
정도로 이해하시면 됩니다!
예외처리 코드
간단한 코드를 보면서 예외처리를 이해해보겠습니다!
enum VendingMachineError: Error {
case invalidSelection
case insufficientFunds(coinsNeeded: Int)
case outOfStock
}
func purchase(beverage: String) throws {
// 여기에 음료 구매 로직을 작성합니다.
// 만약 음료가 없거나, 돈이 부족하다면 아래와 같이 오류를 던집니다.
throw VendingMachineError.insufficientFunds(coinsNeeded: 5)
}
do {
try purchase(beverage: "Cola")
} catch VendingMachineError.insufficientFunds(let coinsNeeded) {
print("돈이 \(coinsNeeded)원 부족합니다.")
}
예시 코드로 자판기에서 음료를 구매하는 상황을 가정해보았습니다!
'purchase'라는 함수에서 음료를 사려고 하는데 돈이 부족한 경우 'insufficientFunds'라는 오류를 던지고 있어요. 그리고 이 오류는 'do-catch' 블록에서 잡아내어, 돈이 얼마나 부족한지 사용자에게 알려주고 있습니다.
프로그래밍에서 예외처리를 잘 이해하고 사용하면, 우리는 예상치 못한 오류로부터 프로그램을 보호하고, 프로그램의 안정성을 높일 수 있습니다. 그렇기 때문에, 예외처리는 모든 개발자가 알아야 할 필수적인 기술 중 하나라고 할 수 있습니다.
이렇게 Swift에서의 예외처리를 쉽게 이해해보았습니다. 예외처리는 복잡해 보이지만, 천천히 하나씩 이해해보면 어렵지 않습니다. 이 포스팅이 여러분들에게 도움이 되었기를 바랍니다.
다음에 또 다른 유익한 정보로 찾아뵙겠습니다.
감사합니다!
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
'Apple > Swift' 카테고리의 다른 글
[Swift] Generic과 Type 이해하기 (2) | 2024.01.09 |
---|---|
[Swift] Generic 이해하기 (0) | 2024.01.04 |
[Swift] Dictionary 완벽 이해하기 (2) | 2024.01.02 |
[Swift] Self 프로퍼티 (2) | 2023.10.30 |
[Swift] 객체 인스턴스(object instance) (0) | 2023.10.20 |