en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

3.03.2011

Objective-C 2.0 的例外處理方法

例外就是由程式中無法預期的條件所產生的錯誤,如果沒有在程式中放入適當的例外處理,就有可能因為執行錯誤而導致整個程式終止。若要進行例外處理,就必須把預期會產生錯誤的程式碼放置於 @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 物件 }






沒有留言:

張貼留言