Exception handling in Daml.


class HasThrow e where

Part of the Exception constraint.


: e -> t

Throw exception in a pure context.

instance HasThrow ArithmeticError

instance HasThrow AssertionFailed

instance HasThrow GeneralError

instance HasThrow PreconditionFailed

class HasMessage e where

Part of the Exception constraint.


: e -> Text

Get the error message associated with an exception.

instance HasMessage AnyException

instance HasMessage ArithmeticError

instance HasMessage AssertionFailed

instance HasMessage GeneralError

instance HasMessage PreconditionFailed

class HasToAnyException e where

Part of the Exception constraint.


: e -> AnyException

Convert an exception type to AnyException.

instance HasToAnyException AnyException

instance HasToAnyException ArithmeticError

instance HasToAnyException AssertionFailed

instance HasToAnyException GeneralError

instance HasToAnyException PreconditionFailed

class HasFromAnyException e where

Part of the Exception constraint.


: AnyException -> Optional e

Convert an AnyException back to the underlying exception type, if possible.

instance HasFromAnyException AnyException

instance HasFromAnyException ArithmeticError

instance HasFromAnyException AssertionFailed

instance HasFromAnyException GeneralError

instance HasFromAnyException PreconditionFailed

class Action m => ActionThrow m where

Action type in which throw is supported.

: Exception e => e -> m t

instance ActionThrow Scenario

instance ActionThrow Update

class ActionThrow m => ActionCatch m where

Action type in which try ... catch ... is supported.


: (() -> m t) -> (AnyException -> Optional (m t)) -> m t

Handle an exception. Use the try ... catch ... syntax instead of calling this method directly.

instance ActionCatch Update

Data Types

type Exception e

= (HasThrow e, HasMessage e, HasToAnyException e, HasFromAnyException e)

Exception typeclass. This should not be implemented directly, instead, use the exception syntax.

data ArithmeticError

Exception raised by an arithmetic operation, such as divide-by-zero or overflow.


Field Type Description
message Text  

data AssertionFailed

Exception raised by assert functions in DA.Assert


Field Type Description
message Text  

data GeneralError

Exception raised by error.


Field Type Description
message Text  

data PreconditionFailed

Exception raised when a contract is invalid, i.e. fails the ensure clause.


Field Type Description
message Text