1. 예외
try : 예외가 발생할 수 있는 함수 앞에 적음
do : 예외 발생 구간을 묶는 함수
catch : 해당 예외문이 나왔을 때 처리함
throw : 예외 가능성이 있을 때 명시
2. 샘플 코드
// 예외를 던질 때 사용할 enum 상수
// 아무것도 없지만 is ErrorType으로 검사할 수 있으니 좋은 구현?
enum FileSendError : ErrorType
{
case NoConnection
case FileNotFound
}
func sendFile( a : Int) throws ->Bool // 예외 가능성이 있으면 throws를 명시
{
// print("s")
// return true // 리턴해버리면 defer 안불림
defer // throw발생해서 종료되었을 때 실행, 예외가 안나왔을때도 부름, 예외가 나와도 부름, 항상 처음에 있어야함
{
print("이 코드는 이 함수가 종료되기 전에 항상 실행")
// closeDB()
}
print("start")
// 멤버 data = 자원할당
if a == 0
{
throw FileSendError.FileNotFound // 예외 던짐
}
print("end")
return true
}
do{
try sendFile(0) // 예외 가능성이 있는 함수를 호출하기 위한 표시
}catch FileSendError.NoConnection{
print("no connection")
}catch FileSendError.FileNotFound{
print("not found")
}catch let error as NSError{ // 모든거 다 잡음
print("Unknown Exception : \(error.localizedDescription)")
}
'교육 > Swift' 카테고리의 다른 글
[swift] selector (0) | 2016.08.22 |
---|---|
[swift] guard (0) | 2016.08.22 |
[swift] generic (0) | 2016.08.08 |
[swift] operator overloading (0) | 2016.08.08 |
[swift] protocol (0) | 2016.08.08 |