티스토리 뷰
728x90
출처 : Swift 에러 (Error) 처리, 예외 상황 다루기 (try, throws, defer 등) : 네이버 ...
enum ParseError : Error { case OverSize case UnderSize case InvalidFormat(value : String) case InvalidData(value : String) }
예외발생
func parseTime(timeString : NSString) throws -> Time { var retTime = Time(hour : 0, min : 0, sec : 0) guard timeString.length == 8 else { if timeString.length > 8 { throw ParseError.OverSize } else { throw ParseError.UnderSize } } if let hour = Int(timeString.substring(to: 2)) { print(hour) guard hour >= 0 && hour < 24 else { throw ParseError.InvalidFormat(value: "시간") } retTime.hour = hour } else { throw ParseError.InvalidFormat(value: "시간") } if let min = Int(timeString.substring(with : NSRange(location : 3, length : 2))) { print(min) guard min >= 0 && min < 60 else { throw ParseError.InvalidFormat(value: "분") } retTime.min = min } else { throw ParseError.InvalidFormat(value: "분") } if let sec = Int(timeString.substring(from : 6)) { print(sec) guard sec >= 0 && sec < 60 else { throw ParseError.InvalidFormat(value: "초") } retTime.sec = sec } else { throw ParseError.InvalidFormat(value: "초") } return retTime }
예외처리
func getPartTime(timeString : NSString, type : String) { do { let time = try parseTime(timeString : timeString) switch type { case "hour": print("\(time.hour)시") case "min": print("\(time.min)분") case "sec": print("\(time.sec)초") default: print("입력값 배당 시간 정보 없음") } } catch ParseError.OverSize { print("입력 문자열이 깁니다.") } catch ParseError.UnderSize { print("입력 문자열이 짧습니다.") } catch ParseError.InvalidData(let part) { print("입력값의 \(part)에 해당하는 형식 오류") } catch ParseError.InvalidFormat(let part) { print("입력값의 \(part)에 해당하는 값 오류") } catch { print("알 수 없는 오류") } }
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 전예희
- 튜닝쇼 2008
- Delphi
- Delphi Tip
- SAS
- Spring MVC
- ble
- Java
- JavaScript
- BPI-M4
- 지스타2007
- Linux
- Xcode
- ffmpeg
- 레이싱모델 익스트림 포토 페스티벌
- 서울오토살롱
- sas2009
- 일본여행
- flex
- NDK
- 송주경
- oracle
- android
- Mac
- 동경
- MySQL
- KOBA
- Spring
- koba2010
- ubuntu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함