2009-03-03 18 views
0

例外を処理するメソッドを追加しようとしましたが、AlertViewをポップアップする代わりにプログラムがクラッシュします。iPhoneでのHTTP例外処理についての質問

-(void)connect:(NSString *)strURL 
{ 
    NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:strURL] 
                  cachePolicy:NSURLRequestUseProtocolCachePolicy  
                  timeoutInterval:60.0]; 

    NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
    if (theConnection) 
    { 
     // receivedData is declared as a method instance elsewhere 
     receivedData = [[NSMutableData data] retain]; 
    } 
    else 
    { 
     // inform the user that the download could not be made 
    } 

} 

2)I追加方法データを受信し、文字列にCONVERする:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    // append the new data to the receivedData 
    // receivedData is declared as a method instance elsewhere 
    [receivedData appendData:data]; 
    ReturnStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
} 

3)私は例外ハンドルメソッドを追加:

1)Iは、接続を設定しました


-(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error { 

    UIAlertView *errorAlert = [[UIAlertView alloc] 
           initWithTitle: [error localizedDescription] 
           message: [error localizedFailureReason] 
           delegate:self 
           cancelButtonTitle:@"OK" 
           otherButtonTitles:nil]; 
    [errorAlert show]; 
} 

strURLを間違ったURLに変更すると、プログラムがクラッシュします。 AlertViewがポップアップしない理由は何ですか?

+0

しようとしたことがありますか? あなたの 'didFailWithError'が呼び出されますか? エラーは何ですか? –

+0

いいえ、メソッドdidFailWithErrorが呼び出されませんでした。私は間違ったURLを使用して接続するので、なぜ呼び出されなかったのかわかりません。 –

答えて

3

error handling that I've got in this fileをチェックしてください。 URLを無効なURLに設定すると、(私の例では)素晴らしいダイアログエラーメッセージが表示されます。私はちょうど確かにそれを試みた。

リンクファイルの関連コードは次のとおりです。あなたは、デバッガでプログラムを介して実行されている

-(void) connection:(NSURLConnection *)connection 
    didFailWithError: (NSError *)error { 
    UIAlertView *errorAlert = [[UIAlertView alloc] 
       initWithTitle: [error localizedDescription] 
       message: [error localizedFailureReason] 
       delegate:nil 
       cancelButtonTitle:@"OK" 
       otherButtonTitles:nil]; 
    [errorAlert show]; 
    [errorAlert release]; 
    [activityIndicator stopAnimating]; 
    NSLog (@"Connection Failed with Error"); 
} 
+0

ありがとうございます。私は今問題を見つける。タイムアウト間隔を60秒に設定すると、アラートが表示されるまでに60秒待つ必要があります。 –