# Errors¶

Error is the parent type for errors in Chapel. TaskErrors is the type of errors thrown from parallel constructs where more than one error can be simultaneously encountered.

class Error

Error is the base class for errors

proc init()

Construct an Error

proc message()

Override this method to provide an error message in case the error is printed out or never caught.

override proc writeThis(f)

Errors can be printed out. In that event, they will show information about the error including the result of calling Error.message.

class NilThrownError: Error

If a nil Error is thrown, NilThrownError will be thrown instead.

class IllegalArgumentError: Error
var formal: string
var info: string
proc init()
proc init(info: string)
proc init(formal: string, info: string)
override proc message()
class TaskErrors: Error

TaskErrors stores multiple errors when they can come up. For example, a coforall loop might throw errors from multiple tasks at the same time. These errors will be reported to the parent task at the end of the coforall in the form of TaskErrors.

Note that errors thrown within a coforall, cobegin, or forall are represented as elements of TaskErrors. In the case of nesting, all errors will be stored in a single TaskErrors.

Errors thrown in begin tasks will be reported within a TaskErrors to the task that uses sync to wait for those begin tasks.

proc init(err: unmanaged Error)

Create a TaskErrors containing only the passed error

proc init()

Create a TaskErrors not containing any errors

proc deinit()
iter these() ref: owned Error

Iterate over the errors contained in this TaskErrors. For example

var taskErrors:TaskErrors = ...;
// Do something with the contained error
}

proc first() ref: owned Error

Returns the first non-nil error contained in this TaskErrors group

override proc message(): string

Returns a string summarizing the errors contained in this TaskErrors. The summary is intended to be concise: it will not grow arbitrarily long if the TaskErrors contains many errors.

iter filter(type t)

Iterate over those errors contained that are the passed type or a subclass of that type.

proc contains(type t)

Returns true if this TaskErrors contains an error of the given type or a subclass of that type.