Notice
Recent Posts
Recent Comments
Link
투케이2K
95. (swift/xcode) do catch try 사용해 에러 발생 상황 확인 및 throw 예외 던지기 수행 실시 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
import UIKit
// MARK: [클래스 동작 실시]
class ViewController: UIViewController {
// MARK: [뷰 메모리 로드 수행 실시]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("")
print("===============================")
print("[ViewController >> viewDidLoad() :: 뷰 메모리 로드 실시]")
print("===============================")
print("")
/*
[요약 설명]
1. guard let : 조건이 true 인 여부를 검사합니다
2. guard let 구문에서 조건이 true 인 경우 guard let 구문을 수행하고 , false 인 경우 else 구문에서 예외 처리를 수행합니다
3. do ~ catch : swift 에서 에러 발생 시 예외 처리를 수행합니다
4. throw : 예외 상황 발생 시 예외 발생 알림 (던지기) 를 수행합니다
5. try : 예외 발생 시 catch 로 예외 정보를 던지며 >> 성공 시 언래핑 된 값을 반환합니다
6. try? : 예외 발생 시 nil 값을 리턴 >> 성공 시 옵셔널 값을 반환합니다
7. try! : 예외 발생 시 런타임 에러 >> 성공 시 언래핑 된 값을 반환합니다
*/
// [변수 선언 실시]
var stringValue: String?
// [do catch 에러 구문 처리 실시]
do {
// [테스트 함수 호출 실시]
let parseData = try self.testMain(strData: stringValue ?? "")
print("")
print("===============================")
print("[ViewController >> viewDidLoad() :: do catch 정상 수행]")
print("[parseData :: \(parseData)]")
print("===============================")
print("")
}
catch let error as ErrorUtil {
print("")
print("===============================")
print("[ViewController >> viewDidLoad() :: catch [1] 에러 발생]")
print("[error :: \(error)]")
print("[localizedDescription :: \(error.localizedDescription)]")
print("===============================")
print("")
}
catch {
print("")
print("===============================")
print("[ViewController >> viewDidLoad() :: catch [2] 에러 발생]")
print("[error :: \(error)]")
print("[localizedDescription :: \(error.localizedDescription)]")
print("===============================")
print("")
}
}
// MARK: - [뷰 화면 표시]
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("")
print("===============================")
print("[ViewController >> viewDidAppear() :: 뷰 화면 표시]")
print("===============================")
print("")
}
// MARK: - [뷰 종료 상태]
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("")
print("===============================")
print("[ViewController >> viewDidDisappear() :: 뷰 종료 상태]")
print("===============================")
print("")
}
// MARK: [enum 사용해 에러 타입 정의 실시 : 선택 사항]
enum ErrorUtil : Error {
// [string 타입 에러 정의]
case stringTypeError(string : String)
// [string Null 에러 정의]
case stringNullError(string : String)
}
// MARK: - [테스트 함수 정의]
func testMain(strData: String) throws -> String {
print("")
print("===============================")
print("[ViewController >> testMain() :: 테스트 함수 수행]")
print("[strData :: \(strData)]")
print("===============================")
print("")
// [리턴 변수 선언 실시]
var returnData = ""
// [guard let 을 사용해 String 타입 여부 검사 실시]
guard let checkType = strData as? String
else {
// [false 인 경우 else 구문에서 예외 처리를 수행]
throw ErrorUtil.stringTypeError(string: strData)
}
// [String 널 체크 수행 실시]
if strData != nil && strData.count > 0 && strData != "" {
}
else {
// [false 인 경우 else 구문에서 예외 처리를 수행]
throw ErrorUtil.stringNullError(string: strData)
}
// [리턴 수행]
return returnData
}
} // [클래스 종료]
[결과 출력]
반응형
'Swift' 카테고리의 다른 글
97. (swift/xcode) URLComponents 사용해 url 주소 접속 정보 확인 실시 - 도메인 , 포트 , 경로 , http , 파라미터 (0) | 2022.08.16 |
---|---|
96. (swift/xcode) get 프로퍼티 (Property) 속성 사용해 변수 값 포맷 출력 실시 (0) | 2022.08.16 |
94. (swift/xcode) func 함수 매개 변수에 struct 구조에 삽입 실시 (0) | 2022.08.16 |
93. (swift/xcode) self 키워드 클래스 전역 변수 및 메소드 지정 실시 (0) | 2022.08.16 |
92. (swift/xcode) as 키워드 사용해 캐스팅 수행 및 as? 옵셔널 데이터 출력 , as! 데이터 강제 추출 실시 (0) | 2022.08.16 |
Comments