Considerate i seguenti/Obj-C frammenti di codice Cocoa:In quali circostanze @finally non è ridondante in Cocoa's try/catch/finally Exception Handling?
MyClass *obj;
@try {
[obj doSomething];
}
@catch (NSException * e) {
NSLog(@"Exception occurred: %@", [e description]);
}
@finally {
[obj cleanUp];
}
e
MyClass *obj;
@try {
[obj doSomething];
}
@catch (NSException * e) {
NSLog(@"Exception occurred: %@", [e description]);
}
[obj cleanUp];
In quali circostanze il primo risultato frammento in [obj cleanUp]
essendo chiamato, mentre il secondo no risultato in [obj cleanUp]
viene chiamato? In altre parole, in quali circostanze è @finally
non ridondante quando si utilizza Cocoa Exception Handling?
FYI, ecco la documentazione di Apple che spiega come eseguire la gestione della memoria con @ try/@ catch/@ throw/@ infine gestione delle eccezioni: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ Eccezioni/Task/HandlingExceptions.html # // apple_ref/doc/uid/20000059-SW7 –