[Swift] 예외처리 - 만약 에러가 발생한다면??

2024. 1. 3. 16:44·Apple/Swift
728x90
반응형

안녕하세요! 피피아노입니다! 🎵

 

이번 포스팅에서는 Swift에서 예외처리(Exception Handling)를 하는 방법에 대해서 한 번 정리를 해보려고 합니다!

 

예외 처리란?

예외처리는 프로그래밍을 하다가 예기치 않은 문제가 발생했을 때, 이를 적절히 처리하고 프로그램이 계속 실행될 수 있도록 돕는 역할을 합니다.

 

말 그대로 예외적인 부분, 즉 오류를 처리하는 거죠! 

 

'예외처리'라는 말은 처음 들어보시는 분들도 계실 수도 있어서 이를 좀 더 쉽게 이해할 수 있도록 일상생활에서의 예를 들어 설명해볼게요.

 

예외처리는 우리의 일상생활에서 안전장치나 보험같은 역할을 합니다. 예상치 못한 사고나 문제가 발생했을 때, 그 상황을 처리하고 본래의 흐름으로 돌아갈 수 있도록 돕는 것이죠.

 

이해가 되셨나요?

 

예외처리의 개념을 알았으니 특징에 대해서 살펴보겠습니다!

 

예외처리의 특징

Swift에서는 'try', 'catch', 'throw', 'throws', 'do'라는 키워드를 사용하여 예외처리를 합니다.

  1. throws: 함수가 오류를 발생시킬 수 있다는 것을 나타내는 키워드입니다. throw는 '던지다'라는 뜻이 있는데요, 함수를 선언할 때 이 throws 키워드를 사용해 '이 함수는 오류를 던질 수 있어요'라는 것을 알립니다.
  2. do - catch: 오류가 발생했을 때 이를 처리하는 키워드입니다. 'do' 블록 안에는 오류를 발생시킬 수 있는 'try' 코드를 작성하고, 'catch' 블록에서는 이 오류를 잡아내어 처리합니다.
  3. 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에서의 예외처리를 쉽게 이해해보았습니다. 예외처리는 복잡해 보이지만, 천천히 하나씩 이해해보면 어렵지 않습니다. 이 포스팅이 여러분들에게 도움이 되었기를 바랍니다.

 

다음에 또 다른 유익한 정보로 찾아뵙겠습니다.

 

감사합니다!


잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!

궁금하신 부분은 댓글로 질문 부탁드립니다!

728x90
반응형

'Apple > Swift' 카테고리의 다른 글

[Swift] Generic과 Type 이해하기  (2) 2024.01.09
[Swift] Generic 이해하기  (2) 2024.01.04
[Swift] Dictionary 완벽 이해하기  (2) 2024.01.02
[Swift] Self 프로퍼티  (2) 2023.10.30
[Swift] 객체 인스턴스(object instance)  (0) 2023.10.20
'Apple/Swift' 카테고리의 다른 글
  • [Swift] Generic과 Type 이해하기
  • [Swift] Generic 이해하기
  • [Swift] Dictionary 완벽 이해하기
  • [Swift] Self 프로퍼티
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (203) N
      • Apple (121) N
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (22) N
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    운영체제
    자바스크립트
    SWIFT
    옵셔널
    Xcode
    이니셜라이저
    오블완
    Vision Pro
    비동기
    코딩테스트
    디자인패턴
    UIKit
    Initializers
    티스토리챌린지
    변수
    배열
    클래스
    메서드
    swiftUI
    연산자
    visionOS
    네트워크
    제어문
    프로퍼티 래퍼
    Optional
    combine
    스위프트
    ios
    함수
    프로세스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Swift] 예외처리 - 만약 에러가 발생한다면??
상단으로

티스토리툴바