꿀똥벌레
꿀똥벌레 개발 블로그
꿀똥벌레
전체 방문자
오늘
어제
  • 분류 전체보기 (90)
    • JAVA (17)
    • SPRING (14)
    • Elasticsearch (4)
    • GRADLE (2)
    • HTML, CSS (0)
    • JAVASCRIPT (0)
    • GIT (1)
    • Vue.js (1)
    • server (1)
    • Python (0)
    • IT리뷰 (0)
    • 인프라 (6)
    • IOS (21)
    • 디자인패턴 (20)
    • Kafka (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • maxConnTotal
  • 엘라스틱서치
  • 스프링 인티그레이션
  • 인덱스 템플릿
  • 스프링 인테그레이션
  • mappings
  • java
  • spring
  • persistence connection
  • persistent connection
  • Index
  • ES
  • springintegration
  • elasticsearch
  • Index Template
  • maxConnPerRoute
  • spring integration
  • SWIFT
  • connectionRequestTimeout
  • KEEPALIVE

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
꿀똥벌레

꿀똥벌레 개발 블로그

IOS

Swift 에러 핸들링 (try, catch, throw, throws, do)

2022. 12. 28. 17:12

Error 선언

enum TestError : Error {
   case outOfRange
   case invalidInput(testNum : Int)
}
  • 에러를 선언시 Error 프로토콜을 구현하도록 한다.

Error를 발생 시킬 메소드 선언

func method(param: Int) throws -> Int {
    guard param > 0 else {
	    throw TestError.outOfRange
    }
}
  • 에러를 던질 가능성이 있는 메소드에 throws 선언
  • 에러 발생 시 throw로 에러를 던진다.

에러 발생 가능성이 있는 메소드(throws 선언 되어 있는 메소드) 는 실행시 try 구문이 필요하다.

try 구문 사용 호출

do {
    let result = try method(param: -1)
} catch TestError.outOfRange {
    print("outOfRange")
} catch TestError.invalidInput(testNum: let num) {
    print(num)
} catch {
    print("UNKNOWN ERROR")
}

//switch 구문 사용
do {
    let result = try method(param: -1)
} catch {
    switch error {
    case TestError.outOfRange:
        print("outOfRange")
    case TestError.invalidInput(testNum: let num):
        print(num)
    default:
        print("UNKNOWN ERROR")
    }
}
  • throws가 달린 메소드를 실행하려 할 땐 try 구문이 필요하다.
  • try 구문 사용시 do {} catch {} 문으로 감싼다.

try? 구문 사용

let resultOptional = try? method(param: -1)
  • 메소드 실행시 오류가 발생함을 인정하고, 메소드 성공시 optional으로 래핑, 실패시 optional(nil) 을 리턴한다.

try! 구문 사용

let resultOptional = try! method(param: -1)
  • 메소드 실행시 오류가 발생하지 않음을 확신할 때 사용한다. 바로 언래핑 된 리턴타입을 가질 수 있으나, 오류 발생시 앱이 종료된다.











저작자표시 (새창열림)

'IOS' 카테고리의 다른 글

ObservableObject 와 Codable 같이 사용하기  (1) 2022.12.31
Swift enum  (0) 2022.12.31
UIKit 커스텀 애니메이션  (0) 2022.12.20
SwiftUI NavigationView BackButton Custom  (0) 2022.11.05
SwiftUI 에서 UIKit 사용하기  (0) 2022.11.01
    꿀똥벌레
    꿀똥벌레
    개발자 꿀똥벌레 입니다.

    티스토리툴바