NSXReturnThrowError
Jonathan “Wolf” Rentzsch has posted some interesting Cocoa error-wrapping macros. I’ve long used some macros to generate and raise NSExceptions
that have the name
, reason
, and userInfo
set based on the error code, a format, and the location in the source file. Rentzsch’s macros go beyond this to stuff the relevant information into a more modern NSError
object, with the error domain cleverly deduced from the function’s return type using @encode
and typeof
. The NSXThrowError
macro will also raise an NSException
that has the NSError
stuffed into its userInfo
. Lastly, the actual Objective-C expression that generated the error code is saved as a string in the NSError
.
Putting on my code critiquing hat, I don’t like that NSXThrowError
introduces an exception name beginning with the reserved NS prefix or that the function-like macros implicitly assign to an error
variable in the local scope. Also, they should probably be do-while protected.