## Error handling

SWT has a well defined strategy for triggering errors and exceptions. Where possible, exceptions are triggered consistently across platforms. However, some errors are specific to an SWT implementation on a particular platform.

SWT can trigger three types of exceptions: IllegalArgumentException, SWTException, and SWTError. Applications should not have to catch any other kind of exception or error when calling SWT.

> Note: If any other exception besides these three is thrown from SWT, it should be considered a bug in the SWT implementation.

### IllegalArgumentException

The arguments passed in SWT API methods are checked for appropriate state and range before any other work is done. An IllegalArgumentException will be thrown when it is determined that an argument is invalid.

SWT throws this exception consistently across all platforms. Code that causes an IllegalArgumentException on one platform will cause the same exception on a different platform.

### SWTException

SWTException is thrown when a recoverable error occurs internally in SWT. The error code and message text provide a further description of the problem.

SWT throws this exception consistently across all platforms. On all platforms, SWT remains in a known stable state after throwing the exception. For example, this exception is thrown when an SWT call is made from a non-UI thread.

### SWTError

SWTError is thrown when an unrecoverable error occurs inside SWT.

SWT will throw this error when an underlying platform call fails, leaving SWT in an unknown state, or when SWT is known to have an unrecoverable error, such as running out of platform graphics resources.

Once an SWT error has occurred, there is little that an application can do to correct the problem. These errors should not be encountered during normal course of operation in an application, but high reliability applications should still catch and report the errors.