2012-05-22 106 views
1

我試圖在我的代碼中用0算術異常來捕獲除法,但它看起來像NSException不會捕獲該異常,程序正在以消息exc_arthimetic錯誤終止。什麼是捕捉異常的方式如何在目標中捕獲exc_arithmetic c

 @try { 

     int k; 

     printf("please enter k value \n"); 
     scanf("%i",&k); 

     int j=1; 

     // testing division 1/0 condition 
     int i=j/k; 
     NSLog(@" value of i= %i",i); 
    } 

    @catch (NSException *exception) { 
     NSLog(@"exception is = %@ reason is %@",[exception name],[exception reason]); 
    } 
    @finally { 
     NSLog(@"inside finally"); 
    } 


    NSLog(@" last line"); 
+0

可能重複[我怎樣趕上全球異常?](http://stackoverflow.com/questions/2826351/how-do-i-catch-global-exceptions) – trojanfoe

+0

我知道,但因爲我沒有找到任何解決方案來處理這個錯誤,我提出這個:) – JavaGeek

+0

你提出的問題使用一種技術,你知道不工作? – trojanfoe

回答

2

exc_arthimetic不是一個例外,而是由OS發送的信號。我建議在嘗試劃分之前檢查分母是否爲零。

爲了捕捉到這個信號更復雜,可能不值得我們付出努力。

看看 Learning Objective-C. Using Xcode 3.2.1. What is error: Program received signal: 「EXC_ARITHMETIC」

+0

感謝您的建議.. – JavaGeek

+1

「更復雜」是一個巨大的輕描淡寫;你幾乎*在信號處理程序中根本無法做任何事*。它們不是設計用來捕捉錯誤並恢復繼續執行的機制。您應該首先防止發生異常。 – bbum