2012-02-26 11 views
-1

コードを実行するとクラッシュします。@try @catchがobjective-cを動作しません

-(NSString*) ExtractStringKeyValue:(NSString*)key 
{ 
    @try { 
    NSRange start = [_responceInfo rangeOfString:key]; 
    NSRange end = [[_responceInfo substringFromIndex:start.location + start.length+2] 
         rangeOfString:@"\""]; 

    NSRange rang = NSMakeRange(
           start.location + start.length+1 
           , end.location+1); 
    return [_responceInfo substringWithRange:rang]; 
    } 
    @catch (NSException * e) { 
     NSLog(@"Exception: %@", e); 
    } 
    @finally { 
     NSLog(@"finally"); 
    } 
} 

デバッグコンソール:

2012-02-27 01:10:16.254 Clicky [8665:9203]例外:*- [NSCFString substringFromIndex:]:範囲外の範囲または指標

2012-02-27 01:10:16.255 Clicky [8665:9203]最後に

ヘルプしてください。

+0

まず第一に、あなたはあなたの質問を編集する必要がありますので、我々は明らかにあなたを見ることができます問題は私たちの目が滲むことなく。 – 0xDE4E15B

+0

エラーを受け取ったところで '_responceInfo'と' key'の値を投稿できますか? 'substringWithRange'には2行ありますが、どちらにエラーが出ますか? – sch

+0

例外ハンドラが機能しなかったという証拠は、あなたのコードとメッセージの最新のものでは提供されません。クラッシュメッセージ(およびトレースバック)はどこにありますか? –

答えて

0

&を貼り付けたコードのどこにも表示されないので、@try/@catchブロックが機能しない理由は、ここに表示されている例外がそのコードから来ていないためです。 :-)

2

我々はコンソールに出力を見ることができるように、あなたのコードは@finallyブロックを通過:

2012-02-27 00:28:02.794 Clicky[8409:9203] finally 

、エラーメッセージTerminating app due to uncaught exception 'NSRangeException', reason: '* -[NSCFString substringFromIndex:]: Range or index out of bounds'によると、私はあなたの問題であることを、あなたに伝えることができますこの方法ではありません。

+0

メソッドを変更しました。 – Vlf

+1

@VlasenkoDmitry **実際の**コンソール出力を使って**実際の**メソッドを投稿してください。この方法は完全に違うので、最初に投稿しました。 – 0xDE4E15B

+0

実際のコンソール出力と実際の方法です。 – Vlf

1

あなたは@tryブロックが失敗した場合、返すために何の文字列はありません方法から何かを返すいない...

-(NSString*) ExtractStringKeyValue:(NSString*)key 
{ 
    NSString *extractedString = nil; 
    @try { 
    NSRange start = [_responceInfo rangeOfString:key]; 
    NSRange end = [[_responceInfo substringFromIndex:start.location + start.length+2] 
         rangeOfString:@"\""]; 

    NSRange rang = NSMakeRange(start.location + start.length+1, 
           end.location+1); 
    extractedString = [_responceInfo substringWithRange:rang]; 
    } 
    @catch (NSException * e) { 
     NSLog(@"Exception: %@", e); 
    } 
    @finally { 
     NSLog(@"finally"); 
    } 
    return extractedString; 
} 
関連する問題