例外就是由程式中無法預期的條件所產生的錯誤,如果沒有在程式中放入適當的例外處理,就有可能因為執行錯誤而導致整個程式終止。若要進行例外處理,就必須把預期會產生錯誤的程式碼放置於 @try 區塊中,之後在 @catch 區塊中放置錯誤時的處理程序,程式會在 @try 區塊拋出例外時,主動執行 @catch 區塊內的程式碼,而不會因為錯誤而停止整個程式的運作。
@finally 區塊則是無論 @try 區塊有沒有拋出例外都會執行,@throw 指令可以讓你拋出自己的例外,你可以使用它拋出一個特定另外,或是在 @catch 區段裡拋出例外,下面程式碼將示範自訂拋出例外的方法並顯示拋出例外之後的結果。
@try {
NSException *e = [NSException
exceptionWithName:@"讀取錯誤"
reason:@"系統內找不到所需要的檔案"
userInfo:nil];
@throw e;
}
@catch(NSException *e) {
NSLog(@"例外:%@\n原因:%@",[e name], [e reason]);
}
上述程式碼製作一個 NSException 的物件 e,並且設定自訂的例外內容,最後使用 @throw 指令丟出此例外。只要在 @try 區塊中有例外產生,程式就會主動執行 @catch 區塊,在上述程式碼中,@catch 區塊的動作只是將該例外的設定內容印出,並沒有做任何處理。而一個程式可以擁有多個 @catch 區段,以捕捉和處理不同的例外型態,這就要看你怎麼去應用了。
//例外處理相關區塊的小整理
@try { 可能產生錯誤的程式碼 }
@catch { 發生錯誤時處理 }
@finally { 一定會執行的處理 }
@throw { Error 物件 }
沒有留言:
張貼留言