I received a reply off-list suggesting that I file a bug.  And I'll certainly 
do that, but before I do that I'd like to confirm that I'm not overlooking 
something obvious.

The fact that these methods throw exceptions if their input data cannot be 
processed is very uncharacteristic of the Cocoa frameworks.  When invoking 
-archivedDataWithRootObject: on, say, dictionary, finding an un-encodeable 
object buried somewhere in the dictionary would seem to be quite common.  
Similarly, when invoking -unarchiveObjectWithFile:, no programmer can guarantee 
what may be found on the filesystem.

Has anyone else ever noticed that these methods are exceptionally lame in their 
lack of error-handling capability?  Is there something about the (un)archiving 
process which makes it particularly inefficient to detect and handle errors?

Jerry

On 2011 Jul 28, at 23:24, Jerry Krinock wrote:

> With each major update of Mac OS X, Apple updates more classes to return 
> proper NSErrors, deprecating methods which either don't give errors or give 
> outmoded error representations.
> 
> But what about NSKeyedArchiver and NSKeyedUnarchiver, in particular these 
> methods…
> 
> +[NSKeyedArchiver archivedDataWithRootObject:]
> +[NSKeyedUnarchiver unarchiveObjectWithFile:]
> 
> -unarchiveObjectWithFile: takes a file, for heaven's sake.  If someone has 
> messed with the file, eek, it raises an exception.  I generally enclose these 
> methods in @try{} to avoid that.  Very primitive!
> 
> Does anyone know why these methods not marked for deprecation?  Is there a 
> reason why we don't we have 21st-century archive/unarchive methods that 
> return errors instead of raise exceptions?

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to