# MagickCore, C API: Dealing with Exceptions @ ImageMagick
ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
Author: ImageMagick Studio LLC
Keywords: magickcore, c, api:, dealing, with, exceptions, ImageMagick, PerlMagick, image processing, image, photo, software, Magick++, OpenMP, convert

AcquireExceptionInfo • ClearMagickException • CatchException • CloneExceptionInfo • DestroyExceptionInfo • GetExceptionMessage • GetLocaleExceptionMessage • InheritException • InitializeExceptionInfo • MagickError • MagickFatalError • MagickWarning • SetErrorHandler • SetFatalErrorHandler • SetWarningHandler • ThrowException

## AcquireExceptionInfo

AcquireExceptionInfo() allocates the ExceptionInfo structure.

The format of the AcquireExceptionInfo method is:

    ExceptionInfo *AcquireExceptionInfo(void)

## ClearMagickException

ClearMagickException() clears any exception that may not have been caught yet.

The format of the ClearMagickException method is:

    ClearMagickException(ExceptionInfo *exception)

A description of each parameter follows:

exception
  the exception info.

## CatchException

CatchException() returns if no exceptions is found otherwise it reports the exception as a warning, error, or fatal depending on the severity.

The format of the CatchException method is:

    CatchException(ExceptionInfo *exception)

A description of each parameter follows:

exception
  the exception info.

## CloneExceptionInfo

CloneExceptionInfo() clones the ExceptionInfo structure.

The format of the CloneExceptionInfo method is:

    ExceptionInfo *CloneException(ExceptionInfo *exception)

A description of each parameter follows:

exception
  the exception info.

## DestroyExceptionInfo

DestroyExceptionInfo() deallocates memory associated with an exception.

The format of the DestroyExceptionInfo method is:

    ExceptionInfo *DestroyExceptionInfo(ExceptionInfo *exception)

A description of each parameter follows:

exception
  the exception info.

## GetExceptionMessage

GetExceptionMessage() returns the error message defined by the specified error code.

The format of the GetExceptionMessage method is:

    char *GetExceptionMessage(const int error)

A description of each parameter follows:

error
  the error code.

## GetLocaleExceptionMessage

GetLocaleExceptionMessage() converts a enumerated exception severity and tag to a message in the current locale.

The format of the GetLocaleExceptionMessage method is:

    const char *GetLocaleExceptionMessage(const ExceptionType severity,
      const char *tag)

A description of each parameter follows:

severity
  the severity of the exception.
tag
  the message tag.

## InheritException

InheritException() inherits an exception from a related exception.

The format of the InheritException method is:

    InheritException(ExceptionInfo *exception,const ExceptionInfo *relative)

A description of each parameter follows:

exception
  the exception info.
relative
  the related exception info.

## InitializeExceptionInfo

InitializeExceptionInfo() initializes an exception to default values.

The format of the InitializeExceptionInfo method is:

    InitializeExceptionInfo(ExceptionInfo *exception)

A description of each parameter follows:

exception
  the exception info.

## MagickError

MagickError() calls the exception handler methods with an error reason.

The format of the MagickError method is:

    void MagickError(const ExceptionType error,const char *reason,
      const char *description)

A description of each parameter follows:

exception
  Specifies the numeric error category.
reason
  Specifies the reason to display before terminating the program.
description
  Specifies any description to the reason.

## MagickFatalError

MagickFatalError() calls the fatal exception handler methods with an error reason.

The format of the MagickError method is:

    void MagickFatalError(const ExceptionType error,const char *reason,
      const char *description)

A description of each parameter follows:

exception
  Specifies the numeric error category.
reason
  Specifies the reason to display before terminating the program.
description
  Specifies any description to the reason.

## MagickWarning

MagickWarning() calls the warning handler methods with a warning reason.

The format of the MagickWarning method is:

    void MagickWarning(const ExceptionType warning,const char *reason,
      const char *description)

A description of each parameter follows:

warning
  the warning severity.
reason
  Define the reason for the warning.
description
  Describe the warning.

## SetErrorHandler

SetErrorHandler() sets the exception handler to the specified method and returns the previous exception handler.

The format of the SetErrorHandler method is:

    ErrorHandler SetErrorHandler(ErrorHandler handler)

A description of each parameter follows:

handler
  the method to handle errors.

## SetFatalErrorHandler

SetFatalErrorHandler() sets the fatal exception handler to the specified method and returns the previous fatal exception handler.

The format of the SetErrorHandler method is:

    ErrorHandler SetErrorHandler(ErrorHandler handler)

A description of each parameter follows:

handler
  the method to handle errors.

## SetWarningHandler

SetWarningHandler() sets the warning handler to the specified method and returns the previous warning handler.

The format of the SetWarningHandler method is:

    ErrorHandler SetWarningHandler(ErrorHandler handler)

A description of each parameter follows:

handler
  the method to handle warnings.

## ThrowException

ThrowException() throws an exception with the specified severity code, reason, and optional description.

The format of the ThrowException method is:

    MagickBooleanType ThrowException(ExceptionInfo *exception,
      const ExceptionType severity,const char *reason,
      const char *description)

A description of each parameter follows:

exception
  the exception info.
severity
  the severity of the exception.
reason
  the reason for the exception.
description
  the exception description.