일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM
- ios
- 토이프로젝트
- 세종대학교
- SwiftUI
- GCD
- 기초문법
- 프로토콜
- 앱개발
- WeatherKit
- Kingfisher
- 스트럭트
- 학과별커뮤니티
- Optional
- 이론
- swift
- 네트워크
- CS
- uikit
- 반응형
- 구름톤 유니브
- mvc
- async
- RxSwift
- 동시성
- collectionview
- struct
- 대표
- 옵셔널
- 실습
- Today
- Total
스윞한 개발자
Swift 기초문법 - 에러 본문
개발을 하다보면 수많은 에러들을 만나게 되는데...
오늘은 에러에 대해 살짝 알아보도록 하겠습니다!!

- 예외처리
- 우리가 원하지 않는 케이스
- 정상적으로 돌아가지 않는 결과물
< 에러가 생길 수 있는 예제 코드 >
totalNumber / inputNumber
0으로 나눌 수 없습니다. -> 에러를 처리해줘야합니다.
if 문으로 해결
if inputNumber != 0 {
throw totalNumber / inputNumber
}
do {
try devideByinputNumber(input)
}catch{
print(error)
{
예외를 던져주는 throw 받아주는 catch를 사용합니다.
* 시험삼아 해볼 do
* 에러 받기 catch
* 에러 던지기 throw error
do{
try code
}catch{
catch error
}
Swift에서는 컴파일러와 런타임 중 발생하는 여러 가지 종류의 에러를 다룰 수 있습니다.
코드 작성 시점에서 발견되는 컴파일 에러와 프로그램 실행 중 발생하는 런타임 에러로 구분 됩니다.
- 컴파일 타임 에러(Compile-time Errors)
* 문법 에러 : 코드가 올바른 Swift 문법을 따르지 않을 때 발생합니다. 이러한 에러는 컴파일하는 동안 발생하며, 컴파일러는 에러 메시지와 함게 해당 줄 및 위치를 알려줍니다.
* 타입 에러 : 변수나 함수 등의 타입이 일치하지 않거나 타입 변환에 문제가 있을 때 발생합니다.
- 런타임 에러 (Runtime Errors)
* 강제 언래핑 에러 : 옵셔널 변수나 옵쳐널 체인이 nil 값을 가리키고 있는 상태에서 강제 언래핑('!')을 시도할 때 발생합니다. 이는 nil 값을 언래핑하여 접근하려 할 때 발생하는 에러로, 런타임 중에 프로그램이 비정상적으로 종료됩니다.
* 배열 인덱스 초과 에러 : 배열의 인덱스 범위를 초과하여 접근하려고 할 때 발생합니다.
* nil 값 처리 에러 : 옵셔널 타입의 변수를 제대로 처리하지 않고 nil 값을 사용하려 할 때 발생합니다. nil 값인 옵셔널 변수에 접근하면 에러가 발생합니다.
* 기타 런타임 에러 : 0으로 나누기, 잘못된 형변환, 잘못된 API 사용 등 여러 가지 상황에서 런타임 에러가 발생할 수 있습니다. 이러한 에러는 프로그램이 실행되는 동안 발생하며, 예외 처리 등의 방법으로 처리할 수 있습니다.

- 에러 띄우기
1. throw 를 사용하여 에러 띄우기
* 에러를 나타내기 위해 'Error'프로토콜을 준수하는 자신만의 에러 유형을 정의합니다.
* 함수나 메서드 내에서 'throw' 키워드를 사용하여 에러를 던집니다.
* 'try' 키워드를 사용하여 에러가 발생할 수 있는 코드 블록을 호출하고, 'catch' 블록에서 에러를 처리합니다.
num CustomError: Error {
case someError
}
func processValue(_ value: Int) throws {
if value < 0 {
throw CustomError.someError
}
// 에러가 발생하지 않으면 정상적으로 처리합니다.
print("Value is positive.")
}
do {
try processValue(-1)
} catch {
print("An error occurred: \(error)")
}
던져진 에러를 받고싶지 않을때 = nil
try? CustomError.someError
처럼 ?로 처리를 할수 있습니다
try! CustomError.someError
!로 처리를 할 경우 에러가 무조건 없을 것이다.라는 뜻입니다. > 에러가 있을 경우 에러 발생(강제 언래핑)
2. assert 를 사용하여 조건 확인하기
* 'assert' 함수를 사용하여 특정 조건이 만족되지 않으면 에러를 발생시킵니다.
* 디버그 모드에서만 동작하며, 릴리스 모드에서는 무시됩니다.
func divide(_ dividend: Int, by divisor: Int) -> Int {
assert(divisor != 0, "Divisor cannot be zero.")
return dividend / divisor
}
let result = divide(10, by: 0) // Assertion failed: Divisor cannot be zero.
'Swift 이론' 카테고리의 다른 글
Swift 기초문법 - 프로토콜 (0) | 2024.01.23 |
---|---|
Swift 기초문법 - 스트럭트 mutating/메서드 (0) | 2024.01.23 |
Swift 기초문법 - 파이널 클래스 (2) | 2024.01.23 |
Swift 기초문법 - 딕셔너리 (2) | 2024.01.23 |
Swift 기초문법 - 상속 (0) | 2024.01.23 |