일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바스크립트 객체 만들기
- max apache
- 자바스크립트 객체
- 제이펍 출판
- 비주얼스튜디오 코드
- 한글입력 씹힘
- jquery 사용하기
- 블록 스코프
- 닐 스미스 지음
- python tkinter 인터페이스
- 자바스크립트 배열 할당
- 자바스크립트 class
- 기획자랑 사이좋게 지내고 싶다
- 자바스크립트
- 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
- 한글입력 안됨
- 생활코딩
- SwiftUI 기반의 iOS 프로그래밍
- 한글입력 잘림
- 객체
- 배열 분해 할당
- 한글입력 오류
- 황반석 옮김
- 한글잘림
- 제이쿼리연결
- max MySQL
- 맥 mysql
- python GUI 사용하기
- 맥 아파치
- 객체지향
Archives
- Today
- Total
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바스크립트 객체 만들기
- max apache
- 자바스크립트 객체
- 제이펍 출판
- 비주얼스튜디오 코드
- 한글입력 씹힘
- jquery 사용하기
- 블록 스코프
- 닐 스미스 지음
- python tkinter 인터페이스
- 자바스크립트 배열 할당
- 자바스크립트 class
- 기획자랑 사이좋게 지내고 싶다
- 자바스크립트
- 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
- 한글입력 안됨
- 생활코딩
- SwiftUI 기반의 iOS 프로그래밍
- 한글입력 잘림
- 객체
- 배열 분해 할당
- 한글입력 오류
- 황반석 옮김
- 한글잘림
- 제이쿼리연결
- max MySQL
- 맥 mysql
- python GUI 사용하기
- 맥 아파치
- 객체지향
Archives
- Today
- Total
java,javascript,android,php,sql,공부용,메모용
try-catch, do-catch, try?, try!오류처리, 예외처리/ Xcode SwiftUI Playground 공부 본문
모바일/SwiftUI ios 공부
try-catch, do-catch, try?, try!오류처리, 예외처리/ Xcode SwiftUI Playground 공부
yy_dd2 2021. 11. 29. 03:06반응형
에러처리 try-catch
// 스위프트 열거형은 에러 프로토콜을 만들기 좋음
enum PhoneError:Error {
case unknown
case batteryLow(batteryLevel: Int)
}
// 배터리가 부족할때 에러를 발생
// 에러 발생시키기
// 코드 사용 후 아래 코드를 실행하기 위해 주석처리하기
throw PhoneError.batteryLow(batteryLevel: 20)
// 던져진 오류를 알리거나 처리하기
1. 에러가 발생한 함수에서 반환 값으로 에러를 반환하여, 해당 함수를 호출한 코드에서 에러를 처 리하도록 합니다.
2. do-catch 구문
3. 옵셔널 값을 반환합니다.
4. assert 를 이용하여 강제로크래쉬를 발생합니다. ( 오류가 발생하지 않을 것이라고 확신하기)
// 핸드폰의 배터리 상태를 체크하는 함수 만들기
/*
// 반환값 없음
func checkPhoneBatteryStatus(batteryLevel: Int) throws {
}
*/
// 반환값이 있다면 throws -> 반환값타입
func checkPhoneBatteryStatus(batteryLevel: Int) throws -> String {
guard batteryLevel != -1 else { throw PhoneError.unknown }
guard batteryLevel > 20 else { throw PhoneError.batteryLow(batteryLevel: 20)}
return "배터리 상태가 정상입니다."
}
do-catch 구문
do {
try 오류 발생 가능 코드 {
} catch 오류 패턴 {
처리코드
}
do {
//try checkPhoneBatteryStatus(batteryLevel: -1)
try checkPhoneBatteryStatus(batteryLevel: 20)
}
catch PhoneError.unknown{
print("알 수 없는 에러입니다.")
} catch PhoneError.batteryLow(let batterryLebel) {
print("배터리 전원 부족 남은 배터리 : \(batterryLebel)%")
} catch {
print("그 외 오류 발생 : \(error)")
}
try?
에러를 옵셔널 값으로 변환해 처리하기
// try? 사용하기
// 에러를 옵셔널 값으로 변환
let status = try? checkPhoneBatteryStatus(batteryLevel: -1)
print(status)
let status2 = try? checkPhoneBatteryStatus(batteryLevel: 30)
print(status2)
try!
에러를 강제로 발생하지 않을 것이라고 확신하여 사용하기
try! 를 사용했는데 에러가 발생하면 강제로 종료됨
// try! 사용하기
// 에러가 발생될거 같은 값에 ! 를 사용해 강제로 에러가 발생하지 않을 것이라고 확신할 때 사용
// 에러가 발생하면 강제로 종료됨
let status3 = try! checkPhoneBatteryStatus(batteryLevel: 30)
print(status3)
더보기
전체코드
import UIKit
// 에러처리 try-catch
// 발생-감지-전파-조작
// 에러 프로토콜
// 스위프트 열거형은 에러 프로토콜을 만들기 좋음
enum PhoneError:Error {
case unknown
case batteryLow(batteryLevel: Int)
}
// 배터리가 부족할때 에러를 발생
// 에러 발생시키기
// throw PhoneError.batteryLow(batteryLevel: 20)
// 던져진 오류를 알리거나 처리하기
/*
1. 에러가 발생한 함수에서 반환 값으로 에러를 반환하여, 해당 함수를 호출한 코드에서 에러를 처 리하도록 합니다.
2. do-catch 구문
3. 옵셔널 값을 반환합니다.
4. assert 를 이용하여 강제로크래쉬를 발생합니다. ( 오류가 발생하지 않을 것이라고 확신하기)
*/
// 핸드폰의 배터리 상태를 체크하는 함수 만들기
/*
// 반환값 없음
func checkPhoneBatteryStatus(batteryLevel: Int) throws {
}
*/
// 반환값이 있다면 throws -> 반환값타입
func checkPhoneBatteryStatus(batteryLevel: Int) throws -> String {
guard batteryLevel != -1 else { throw PhoneError.unknown }
guard batteryLevel > 20 else { throw PhoneError.batteryLow(batteryLevel: 20)}
return "배터리 상태가 정상입니다."
}
/*
do {
try 오류 발생 가능 코드 {
} catch 오류 패턴 {
처리코드
}
*/
do {
//try checkPhoneBatteryStatus(batteryLevel: -1)
try checkPhoneBatteryStatus(batteryLevel: 20)
}
catch PhoneError.unknown{
print("알 수 없는 에러입니다.")
} catch PhoneError.batteryLow(let batterryLebel) {
print("배터리 전원 부족 남은 배터리 : \(batterryLebel)%")
} catch {
print("그 외 오류 발생 : \(error)")
}
// try? 사용하기
// 에러를 옵셔널 값으로 변환
let status = try? checkPhoneBatteryStatus(batteryLevel: -1)
print(status)
let status2 = try? checkPhoneBatteryStatus(batteryLevel: 30)
print(status2)
// try! 사용하기
// 에러가 발생될거 같은 값에 ! 를 사용해 강제로 에러가 발생하지 않을 것이라고 확신할 때 사용
// 에러가 발생하면 강제로 종료됨
let status3 = try! checkPhoneBatteryStatus(batteryLevel: 30)
print(status3)
반응형
'모바일 > SwiftUI ios 공부' 카테고리의 다른 글
고차함수, map, filter, reduce / Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
---|---|
클로저, closures / Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
옵셔널 체이닝 / Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
enum 열거형 / Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
프로토콜 protocols 정의 채택, 프로토콜 프로퍼티, 프로토컬 메서드, 프로토컬 이니셜라이저, 프로토컬 익스텐션 (extension)/ Xcode SwiftUI Playground 공부 (0) | 2021.11.29 |
Comments