The Perl Advent Calendar needs more articles for 2022. Submit your idea today!

NAME

Data::Object::Exception

ABSTRACT

Exception Class for Perl 5

SYNOPSIS

  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new;

  # $exception->throw

DESCRIPTION

This package provides functionality for creating, throwing, and introspecting exception objects.

SCENARIOS

This package supports the following scenarios:

args-1

  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new('Oops!');

  # $exception->throw

The package allows objects to be instantiated with a single argument.

args-kv

  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new(message => 'Oops!');

  # $exception->throw

The package allows objects to be instantiated with key-value arguments.

ATTRIBUTES

This package has the following attributes:

context

  context(Any)

This attribute is read-only, accepts (Any) values, and is optional.

id

  id(Str)

This attribute is read-only, accepts (Str) values, and is optional.

message

  message(Str)

This attribute is read-only, accepts (Str) values, and is optional.

METHODS

This package implements the following methods:

explain

  explain() : Str

The explain method returns an error message with stack trace.

explain example #1
  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new('Oops!');

  $exception->explain

throw

  throw(Tuple[Str, Str] | Str $message, Any $context, Maybe[Number] $offset) : Any

The throw method throws an error with message (and optionally, an ID).

throw example #1
  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new;

  $exception->throw('Oops!')
throw example #2
  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new('Oops!');

  $exception->throw
throw example #3
  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new;

  $exception->throw(['E001', 'Oops!'])

trace

  trace(Int $offset, $Int $limit) : Object

The trace method compiles a stack trace and returns the object. By default it skips the first frame.

trace example #1
  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new('Oops!');

  $exception->trace(0)
trace example #2
  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new('Oops!');

  $exception->trace(1)
trace example #3
  use Data::Object::Exception;

  my $exception = Data::Object::Exception->new('Oops!');

  $exception->trace(0,1)

AUTHOR

Al Newkirk, awncorp@cpan.org

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues