[CS] iOS스터디 Level 1 (6)

세훈·2025년 8월 4일

CS

목록 보기
6/11
post-thumbnail

https://github.com/JeaSungLEE/iOSInterviewquestions
with perplexity

Level1


Swift의 에러 처리 방법에 대해 설명해주세요.


  • Swift의 에러 처리는 안전하고 명확하게 코드를 작성할 수 있도록 설계되어 있다.
  • 주요 키워드는 throws, try, catch이며, 에러 상황을 함수 선언, 호출, 처리 단계별로 다룰 수 있습니다.


throws, try, catch 키워드의 사용 방법은 무엇인가요?


throws

  • 함수 선언 시 해당 함수가 에러를 발생시킬 수 있음을 표시.
enum NetworkError: Error {
    case invalidURL
    case noResponse
}
func fetchData(from url: String) throws -> String {
    guard url.starts(with: "https://") else {
        throw NetworkError.invalidURL
    }
    return "Data from \(url)"
}

try

  • 에러를 발생시킬 수 있는(throws) 함수를 호출할 때 반드시 try 키워드를 사용해야 함.
let data = try fetchData(from: "https://example.com")

do-catch

  • 에러가 발생할 수 있는 코드를 실행(try)하고, 에러가 발생하면 catch 블록에서 에러를 처리합니다
do {
    let data = try fetchData(from: "invalid-url")
    print(data)
} catch NetworkError.invalidURL {
    print("잘못된 URL입니다.")
} catch {
    print("예상치 못한 에러: \(error)")
}


옵셔널을 사용한 에러 처리와 do-catch를 사용하는 에러 처리의 차이는 무엇인가요?


옵셔널 에러 처리 (try?)

  • try?를 사용하면 에러가 발생할 경우 결과를 nil로 반환.
  • 에러 상세 정보가 필요 없고, 간단히 실패만 체크할 경우 유용.
let result = try? fetchData(from: "invalid-url")
print(result) // nil

do-catch 에러 처리

  • do-catch는 에러의 종류·내용을 확인하고 구체적으로 대응할 수 있음.
do {
    let data = try fetchData(from: "invalid-url")
    print(data)
} catch {
    print("에러 발생! \(error)")
}



에러를 전파하는 방법은 무엇인가요?


throws로 에러 전파

  • throws를 선언한 함수에서 에러가 발생하면 함수 호출자에게 에러가 전파.
  • 호출한 쪽에서는 do-catch 또는 try? 등으로 에러를 받거나 무시할 수 있음.
func processData() throws {
    try fetchData(from: "invalid-url")
}
do {
    try processData()
} catch {
    print("Error: \(error)")
}

rethrows

  • 고차 함수 등에서 매개변수 클로저가 에러를 던질 때만 전파합니다. 제한적으로 사용됨.
func perform(operation: () throws -> Void) rethrows {
    try operation()
}
try perform { throw NetworkError.noResponse }
profile
개발새발 iOS개발자

0개의 댓글