🌟 스위프트에서 에러 처리
enum FileTrasferError: Error {
case noConnection
case lowBandwidth
case fileNotFound
}
네트워크 연결이 없거나
, 네트워크 속도가 너무 느리거나
, 전송할 파일을 찾지 못한다거나 하는 에러
는 다음과 같이 Error 프로토콜을 따르는 열거형으로 표현func transferFile() throws -> Bool {
//
}
throws
키워드 사용 throws
키워드는 반환 타입 앞에 위치var connection = true
var connectionSpeed = 30.00
var fileFound = false
enum FileTransferError: Error {
case noConnection
case lowBandwidth
case fileNotFound
}
func fileTransfer() throws {
guard connection else {
throw FileTransferError.noConnection
}
guard connectionSpeed > 30 else {
throw FileTransferError.lowBandwidth
}
guard fileFound else {
throw FileTransferError.fileNotFound
}
}
throw
와 guard
구문을 이용한다.guard
구문의 조건문이 false
경우에는 else
절에 해당하는 error throwing
이 발생한다.func checkSendingFile() -> String {
do {
try fileTransfer()
} catch FileTransferError.noConnection {
return "No Network Connection"
} catch FileTransferError.lowBandwidth {
return "File Transfer Speed is Too Low"
} catch FileTransferError.fileNotFound {
return "File Not Found"
} catch {
return "Unknown Error"
}
return "Transfer Success"
}
do-catch
구문과 사용do
내에서 fileTransfer()
함수가 에러를 던질경우, catch
구문이 각 에러에 해당되는 문자열을 반환. 아무런 에러가 없을 경우 전송 성공 문자열을 반환.catch
는 'catch all' 구문으로, 패턴매칭이 이뤄지지 않은 모든 에러에 대해 "Unknown Error" 를 반환. do-catch
구문은 가능한 모든 에러에 대해 처리
할 수 있도록 구성해야 함.