서론
오류를 꼼꼼하게 처리하여 안정성을 높이는데에 필요한 방법이다.
스위프트는 크게 두가지의 방법이 있는데 옵셔널과 이번 포스트이다.
오류 처리 구문
오류를 처리하기 위해서는 오류 정보를 담아 함수나 메소드 외부로 던질 오류 타입 객체가 필요하다.
보통 열거형으로 타입을 정의하는 경우가 많다.
중요!!
protocol Error{
}
위와 같이 오류 타입으로 사용되는 열거형 객체를 정의 할 때는 반드시 Error라는 프로토콜로 구현해야한다.
예시
[YYYY-MM-DD] 이라는 문자열을 분석하여 연도, 월, 일 형식의 데이터로 변경하려고 한다.
발생할 수 있는 오류
1. 입력된 문자열의 길이가 필요한 크기와 맞지 않는 오류
2. 입력된 문자열의 형식이 YYYY-MM-DD 형태가 아닌 오류
3. 입력된 문자열의 값이 날짜와 맞지 않는 오류
enum DateParseError: Error{
case overSizeString
case underSizeString
case incorrectFormat(part: String)
case incorretData(part: String)
}
오류 던지기
함수나 메소드를 작성할 때 throws를 정의 구문에 작성
func test() throws -> String
예시 전체 소스
import Foundation
struct Date{
var year: Int
var month: Int
var date: Int
}
func parseDate(param: NSString) throws ->Date{
//입력된 문자열의 길이가 10이 아닐 경우 분석이 불가능하므로 오류
guard param.length == 10 else{
if parma.length > 10
throw DateParseError.overSizeString
} else {
throw DateParseError.underSizeString
}
}
//반환 할 객체 타입 선언
var date Result = Date(year: 0, month: 0, date: 0)
// 연도 정보 분석
if let year = Int(param.substring(with: NSRange(location: 0, length: 4))) {
dateResult.year = year
} else {
//연도 분석 오류
throw DateParseError.incorrectFormat(part: "year")
}
// 월 정보 분석
if let month = Int(param.substring(with: NSRange(location: 5, length: 2))) {
//월에 대한 값은 1 ~ 12까지만
guard month > 0 && month < 13 else{
throw DateParseError.incorrectData(part: "month")
}
dateResult.month = month
} else {
//월 분석 오류
throw DateParseError.incorrectFormat(part: "month")
}
// 일 정보 분석
if let date = Int(param.substring(with: NSRange(location: 8, length: 2))) {
//일에 대한 값은 1 ~ 31까지만
guard month > 0 && month < 32 else{
throw DateParseError.incorrectData(part: "date")
}
dateResult.date = date
} else {
//일 분석 오류
throw DateParseError.incorrectFormat(part: "datte")
}
return dateResult
}
'개발 > 개발' 카테고리의 다른 글
[iOS] - Alert 알림창 띄우기 (Alert Style) - 1 (0) | 2019.08.11 |
---|---|
[iOS] - Swift 에서 Random 함수 이용하여 난수 생성하기 (0) | 2019.08.09 |
[iOS] - SWRevealViewController 사이드메뉴 사용 방법 (0) | 2019.08.02 |
[Swift] - Closure (클로저) (0) | 2019.07.30 |
[iOS] - Cocoa Pod 사용 시 필요 명령어 모음 (0) | 2019.07.28 |