try, try?, try! swift

이태혁·2021년 2월 10일
0

기록용

try

do catch와 혼합해서 사용

do {
    let result = try doSomething()
}
catch ThrowableError.badError(let howBad) {
    // Here you know about the error
    // Feel free to handle or to re-throw

    // 1. Handle
    print("Bad Error (How Bad Level: \(howBad)")

    // 2. Re-throw
    throw ThrowableError.badError(howBad: howBad)
}
func doSomeOtherThing() throws -> Void {    
    // Not within a do-catch block.
    // Any errors will be re-thrown to callers.
    let result = try doSomething()
}
  • 이 내용을 검색하게 된 계기가 try를 do catch없이 사용하는것을 보고 검색하게 됐는데
    제일 밑의 경우에 해당되는 듯!
    • 현재 함수에서는 부르기만 하고 에러 처리를 상위함수에게 위임하는 형태인듯

try?

if let result = try? doSomething() {
    // doSomething succeeded, and result is unwrapped.
} else {
    // Ouch, doSomething() threw an error.
}
guard let result = try? doSomething() else {
    // Ouch, doSomething() threw an error.
}
// doSomething succeeded, and result is unwrapped.

try!

let result = try! doSomething() // if an error was thrown, CRASH!

스택 오버플로우, 상세하게 종류별로 설명해놓음
한글 블로그, 간단명료하게 정리
공식문서-양이 방대함

profile
back-end, cloud, docker, web의 관심이 있는 예비개발자입니다.

0개의 댓글