# Error::TypeTiny - exceptions for Type::Tiny and friends - perldoc - [phpMan]

## NAME
    [Error::TypeTiny](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny/markdown) - exceptions for [Type::Tiny](https://www.chedong.com/phpMan.php/perldoc/Type%3A%3ATiny/markdown) and friends

## SYNOPSIS
       use [Data::Dumper](https://www.chedong.com/phpMan.php/perldoc/Data%3A%3ADumper/markdown);
       use [Try::Tiny](https://www.chedong.com/phpMan.php/perldoc/Try%3A%3ATiny/markdown);
       use [Types::Standard](https://www.chedong.com/phpMan.php/perldoc/Types%3A%3AStandard/markdown) qw(Str);

       try {
          Str->assert_valid(undef);
       }
       catch {
          my $exception = shift;
          warn "Encountered Error: $exception";
          warn Dumper($exception->explain)
             if $exception->isa("[Error::TypeTiny::Assertion](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny%3A%3AAssertion/markdown)");
       };

## STATUS
    This module is covered by the Type-Tiny stability policy.

## DESCRIPTION
    When [Type::Tiny](https://www.chedong.com/phpMan.php/perldoc/Type%3A%3ATiny/markdown) and its related modules encounter an error, they throw an exception object.
    These exception objects inherit from [Error::TypeTiny](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny/markdown).

### Constructors
### new
        Moose-style constructor function.

### throw
        Constructs an exception and passes it to "die".

        Automatically populates "context" and "stack_trace" if appropriate.

    "throw_cb($callback, %attributes)"
        Constructs an exception and passes it to $callback which should be a coderef; if undef, uses
        "die".

        Automatically populates "context" and "stack_trace" if appropriate.

### Attributes
    "message"
        The error message.

    "context"
        Hashref containing the package, file and line that generated the error.

    "stack_trace"
        A more complete stack trace. This feature requires [Devel::StackTrace](https://www.chedong.com/phpMan.php/perldoc/Devel%3A%3AStackTrace/markdown); use the $StackTrace
        package variable to switch it on.

### Methods
    "to_string"
        Returns the message, followed by the context if it is set.

### Functions
    "[Error::TypeTiny::croak](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny%3A%3Acroak/markdown)($format, @args)"
        Functional-style shortcut to "throw" method. Takes an "sprintf"-style format string and
        optional arguments to construct the "message".

### Overloading
    *   Stringification is overloaded to call "to_string".

### Package Variables
    %[Carp::CarpInternal](https://www.chedong.com/phpMan.php/perldoc/Carp%3A%3ACarpInternal/markdown)
        [Error::TypeTiny](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny/markdown) honours this package variable from Carp. ( %[Error::TypeTiny::CarpInternal](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny%3A%3ACarpInternal/markdown) is
        an alias for it.)

    $[Error::TypeTiny::StackTrace](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny%3A%3AStackTrace/markdown)
        Boolean to toggle stack trace generation.

    $[Error::TypeTiny::LastError](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny%3A%3ALastError/markdown)
        A reference to the last exception object thrown.

## CAVEATS
    Although [Error::TypeTiny](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny/markdown) objects are thrown for errors produced by [Type::Tiny](https://www.chedong.com/phpMan.php/perldoc/Type%3A%3ATiny/markdown), that doesn't mean
    every time you use [Type::Tiny](https://www.chedong.com/phpMan.php/perldoc/Type%3A%3ATiny/markdown) you'll get [Error::TypeTinys](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTinys/markdown) whenever you want.

    For example, if you use a [Type::Tiny](https://www.chedong.com/phpMan.php/perldoc/Type%3A%3ATiny/markdown) type constraint in a Moose attribute, Moose will not call
    the constraint's "assert_valid" method (which throws an exception). Instead it will call "check"
    and "get_message" (which do not), and will "confess" an error message of its own. (The
    $LastError package variable may save your bacon.)

## BUGS
    Please report any bugs to <<https://github.com/tobyink/p5-type-tiny/issues>>.

## SEE ALSO
    [Error::TypeTiny::Assertion](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny%3A%3AAssertion/markdown), [Error::TypeTiny::WrongNumberOfParameters](https://www.chedong.com/phpMan.php/perldoc/Error%3A%3ATypeTiny%3A%3AWrongNumberOfParameters/markdown).

    [Try::Tiny](https://www.chedong.com/phpMan.php/perldoc/Try%3A%3ATiny/markdown), [Try::Tiny::ByClass](https://www.chedong.com/phpMan.php/perldoc/Try%3A%3ATiny%3A%3AByClass/markdown).

## AUTHOR
    Toby Inkster <<tobyink@cpan.org>>.

## COPYRIGHT AND LICENCE
    This software is copyright (c) 2013-2014, 2017-2023 by Toby Inkster.

    This is free software; you can redistribute it and/or modify it under the same terms as the Perl
    5 programming language system itself.

## DISCLAIMER OF WARRANTIES
    THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
    WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
    PURPOSE.

