Introduction to Error Handling Programming Guide For Cocoa

Every program must deal with errors as they occur at runtime. The program, for example, might not be able to open a file, or perhaps it cannot parse an XML document. Often errors such as these require the program to inform the user about them. And perhaps the program can attempt to get around the problem causing the error.

Cocoa (and Cocoa Touch) offer developers programmatic tools for these tasks: the NSError class in Foundation and new methods and mechanisms in the Application Kit to support error handling in applications. An NSError object encapsulates information specific to an error, including the domain (subsystem) originating the error and the localized strings to present in an error alert. With an application there is also an architecture allowing the various objects in an application to refine the information in an error object and perhaps to recover from the error.

You should read this document to understand the NSError API and architecture and how to use them.

Organization of This Document

Error Handling Programming Guide for Cocoa has the following articles:

The two chapters relevant to iOS are Error Objects, Domains, and Codes and Using and Creating Error Objects.

See Also

The Document Architecture Supports Robust Error Handling" in Document-Based App Programming Guide for Mac offers valuable advice for subclasses that override methods with a by-reference NSError parameter.

Types of Dialogs and When to Use Them offers advice on the form and content of alerts in OS X. iOS Human Interface Guidelines offers similar advice for alerts on iOS. You should consult these guidelines before composing your error messages. Also take a look at the following documents discussing areas of Cocoa programming related to error handling and the presentation of error messages:

Exception Programming Topics discusses how to raise and handle exceptions. Exception Handling in The Objective-C Programming Language describes the compiler directives @try, @catch, @throw, and @finally, which are used in exception handling.