2012-06-04 11 views
6

Esiste un modo corretto per rilevare le eccezioni all'interno del codice di blocco?Come rilevare le eccezioni all'interno di BlockCode (obiettivo C)

ho ottenuto il seguente codice:

void(^callback(int) = ^(int respond){ 
    [self DoSomethingWithRespond:respond]; //this throws an exception 
}; 

-(void)DoSomethingWithRespond:(int)respond{ 
    if(respond == 400){ 
    NSException *exception = [NSException 
           exceptionWithName:@"Failed" 
           reason:logMessage 
           userInfo:nil]; 
    @throw exception 
    } 
} 

i metodi di callback viene chiamato da un altro thread. Se la risposta è uguale a 400, il metodo DoSomethingWithRespond genererà un'eccezione.

+1

In Objective-C Eccezioni sono utilizzati solo per eccezionali, vale a dire un caso fortuito, cioè errori programmatore – hooleyhoop

+0

Ma voglio prendere tale eccezione, errore di programmazione o no .. :-) – Zillan

+0

Certo, lo so che non è un risposta. Ho upvoted quindi spero che ne avrai uno. Finché sei consapevole che quello che stai facendo è considerato un codice assolutamente orribile, ti auguro buona fortuna. – hooleyhoop

risposta

4
@try { 
     <#statements#> 
    } 
    @catch (NSException *exception) { 
     <#handler#> 
    } 
    @finally { 
     <#statements#> 
    } 
+1

O mio dio ... Sembra proprio che non si completi automaticamente all'interno di un codice di blocco. Ma il '@try - catch' sembra funzionare ... Grazie! – Zillan

Problemi correlati