------------------------------------------------------------------------
0.24 | Piotr Roszatycki <dexter@cpan.org> | 2009-12-13

New:

* Setting the default value via exception class makes changes only for this
  class.  It is possible to redefine the default verbosity for i.e.
  Exception::Died class and it won't change the default verbosity for
  Exception::Base. 

------------------------------------------------------------------------
0.23 | Piotr Roszatycki <dexter@cpan.org> | 2009-10-20

New:

* Method "catch" has optional argument.  It recovers an exception from this
  argument or from "$@" variable by default.

------------------------------------------------------------------------
0.2202 | Piotr Roszatycki <dexter@cpan.org> | 2009-08-13

Fixes:

* The smart matching operator "~~" requires second argument to be a scalar for
  Perl >= 5.10.1.

------------------------------------------------------------------------
0.2201 | Piotr Roszatycki <dexter@debian.org> | 2009-04-02

Fixes:

* Method "match" works correctly if attribute contains ArrayRef.

Changes:

* POD is mixed with rest of code.

------------------------------------------------------------------------
0.22 | Piotr Roszatycki <dexter@debian.org> | 2009-03-24

New:

* sprintf is used if "message" attribute is an array reference.

  Exception::Base->throw( message => ['Failed in %s', __PACKAGE__] );

Changes:

* Build requires Test::Unit::Lite 0.21.

------------------------------------------------------------------------
0.21 | Piotr Roszatycki <dexter@debian.org> | 2008-12-08

Fixes:

* Skip ignored packages for verbosity level 2.

* Verbosity level can not be changed.  Reset internal cache with classes
  defaults after the default value was changed.

Changes:

* Method "import" was refactored.

------------------------------------------------------------------------
0.20 | Piotr Roszatycki <dexter@debian.org> | 2008-12-05

New:

* Major API changes.

* New methods to_number/to_string replaced numerify/stringify.

* New method get_caller_stacktrace replaced _caller_backtrace.

* New method: to_bool.

* New internal function qualify_to_ref() which uses Symbol module if it is
  possible.

* Read-only attributes can be defined with pragma interface.

Removed:

* Removed methods: try, with.

* Removed export of try/catch/throw methods and :all tag.

Changes:

* Reference arguments stored as caller_stack are weakened if it is possible.

* catch method takes no arguments.

------------------------------------------------------------------------
0.1901 | Piotr Roszatycki <dexter@debian.org> | 2008-10-13

Fixes:

* Some warnings disabled.

* Added missing test file to manifest.

* Some POD errors fixed.

Changes:

* Updated bundled Test::Unit::Lite to 0.1002.

------------------------------------------------------------------------
0.19 | Piotr Roszatycki <dexter@debian.org> | 2008-10-08

Fixes:

* Don't create package if it is loaded correcly.

Changes:

* Cleaned up "with" method.

* Updated bundled Test::Unit::Lite to 0.1001.

------------------------------------------------------------------------
0.18 | Piotr Roszatycki <dexter@debian.org> | 2008-10-08

New:

* New method "matches" and overloaded operator "~~" are similar to
  "with" method and can be used with new "given" syntax.

  eval { Exception::Base->throw( message => "foo" ) };
  if ($@) {
    my $e = Exception::Base->catch;
    given ($e) {
      when ({ message => "foo" }) { warn "has a foo message"; }
      when ("Exception::Base")    { warn "is an Exception::Base"; }
    }
  }

* The exception class can be created with "import" interface in own package.

  package Exception::My;
  use Exception::Base (__PACKAGE__) =>
    'has' => 'myattr',
  };

* New attribute "stringify_attributes" defines attributes which create
  string returned by stringify method.

  use Exception::Base 'Exception::WithReason' =>
    'has' => 'reason',
    stringify_attributes => ['message', 'reason'],
  };
  eval { Exception::WithReason->(
    message => "My message",
    reason  => "My reason",
  );
  print $@->stringify;  # "My message: My reason"

* The default value for new attribute defined with "has" keyword with "import"
  interface can be set in the same statement.

  use Exception::Base 'Exception::WithDefaultValue' =>
    'has' => 'value',
    'value' => 'Default value',
  };

Changes:

* The "with" and "try" methods return empty string instead "0" as false
  value.

* Removed private methods "__stringify" and "__numerify". The methods
  "stringify" and "numerify" overloads "q{""}" and "0+" operators.

* New meta-attribute "numeric_attribute" which contains the name of attribute
  which represents exception object in numeric context.

* New constant RE_NUM_IN.

* Updated bundled Test::Unit::Lite to 0.10.

------------------------------------------------------------------------
0.1702 | Piotr Roszatycki <dexter@debian.org> | 2008-05-28

Fixed:

* Fix some "undefined value" warning.

------------------------------------------------------------------------
0.1701 | Piotr Roszatycki <dexter@debian.org> | 2008-05-12

* Corrected documentation.

------------------------------------------------------------------------
0.17 | Piotr Roszatycki <dexter@debian.org> | 2008-05-11

Incompatibilities:

* The "catch" method doesn't rethrow a caught exception.  The reference to
  array is no longer an argument for the method.  The class name means that
  caught non-exception will be converted to this class.

New:

* The "with" method supports "-isa" and "-has" keyword. Value can be a
  reference to array which means any value matches.

Changes:

* Show full propagated stack for verbosity = 4.
* The "with" method matches the default_attribute if one argument is given.

------------------------------------------------------------------------
0.16 | Piotr Roszatycki <dexter@debian.org> | 2008-05-07

Incompatibilites:

* The FIELD constant was renamed to ATTRS as far as every OO language calls it
  attributes.  All derived classes should use ATTRS constant instead of FIELD
  constant.
* An unknown attribute will be ignored instead to be part of properties
  attribute.  You can create additional exception class which supports these
  attributes.
* Removed eval_error attribute.  If the error stack is empty, the catch method
  recover $@ variable into attribute pointed by eval_attribute.
* The catch method returns $@ variable if error stack is empty.
* The _stringify private method renamed to __stringify.  It might be important
  for derived classes which overloads q{""}.

New:

* New attribute value which can contain numeric value.
* The exception object can be used in bool, numeric or string context.  The
  bool value is always true.  The numeric value returns the content of value
  attribute.

Changes:

* The default verbosity for stringification of exception object is 0.
* The _stringify private method was renamed to __stringify.
* The try method clears $@ variable.
* If throw method is called with one argument, its value is stored in
  attribute pointed by default_attribute.

Fixes:

* Support for threads module.

------------------------------------------------------------------------
0.15 | Piotr Roszatycki <dexter@debian.org> | 2008-04-19

New:

* throw() method is exported with ":all" tag.  It can break the code which
  uses indirect notation.

Changes:

* Drop indirect notation is POD and code.

------------------------------------------------------------------------
0.14 | Piotr Roszatycki <dexter@debian.org> | 2008-04-13

New:

* New verbosity level 4. Always dumps full stack trace. The ignore_package and
  ignore_level has meaning only for first line of the error message.
* New field ignore_class which filters stack trace.
* New syntax for import. The default values (verbosity, message, ignore_*,
  ...) can be replaced or changed based on previous value.
* Show package in stack trace.

Changes:

* Updated bundled Test::Unit::Lite to 0.0903.

------------------------------------------------------------------------
0.13 | Piotr Roszatycki <dexter@debian.org> | 2007-11-19

Changes:

* If the error stack is empty, the catch method returns undefined value.
* Updated bundled Test::Unit::Lite to 0.0701.

------------------------------------------------------------------------
0.12 | Piotr Roszatycki <dexter@debian.org> | 2007-10-29

Fixes:

* ignore_level has meaning only for non-skipped levels.
* Changed $SIG{__DIE__} does not interfere with evals used internally.

Changes:

* ignore_level and ignore_package does not change caller_info. This attributes
  have meaning only for stringify output.
* package, file, line, subroutine are now methods, not attributes anymore.
* The attributes does not override base class methods if are existing.
* Minor refactoring.
* Updated bundled Test::Unit::Lite to 0.07.

------------------------------------------------------------------------
0.11 | Piotr Roszatycki <dexter@debian.org> | 2007-10-13

New:

* New field eval_error contains pure eval's error.

Changes:

* Die if can't load existing module.
* Updated bundled Test::Unit::Lite to 0.0601.
* Compatibility with Kurila 1.4.

------------------------------------------------------------------------
0.10 | Piotr Roszatycki <dexter@debian.org> | 2007-10-09

Changes:

* Throw new exception if first parameter for Exception::Base->throw($e,
  @args) is not an Exception::Base object.  It gives the syntax for
  rethrowing the simple eval's error.
* Skip derived from Exception::Base on stack dump output.  It is useful if
  the derived class overwrites throw() method.
* Do not test POD errors unless $ENV{PERL_TEST_POD} is true.

------------------------------------------------------------------------
0.09 | Piotr Roszatycki <dexter@debian.org> | 2007-10-08

New:

* Defined accessors for class fields.
* New fields: package, file, line, subroutine.

Changes:

* Exception::Base->new() collects system data.
* $e->throw() does not overrides existing caller stack.
* Additional "$e->throw(overriden=>'value')" syntax for rethrowing the
  exception with overriden some field.
* Additional "Exception::Base->throw($e, ...)" syntax for rethrowing the
  exception with changed own class.
* Use default message if argument or field is an empty string.

------------------------------------------------------------------------
0.08 | Piotr Roszatycki <dexter@debian.org> | 2007-10-06

New:

* use Exception::Base ':all'.
* Removed " foo at file line 123." string for caught standard die message.
* Removed also the end of line (LF) for caught standard die message.
* The system data are not collected with verbosity level lower than 2.

Minor changes:

* Switched to Module::Build.
* Updated bundled Test::Unit::Lite to 0.05.
* Replaced some textevals with closures or pure references.
* Does not use Scalar::Util::blessed() and Carp::croak().
* Updated benchmark results in documentation.

------------------------------------------------------------------------
0.07 | Piotr Roszatycki <dexter@debian.org> | 2007-05-18

Fixed error:

* Load base class of newly created exception before checking its default
  properties.

------------------------------------------------------------------------
0.06 | Piotr Roszatycki <dexter@debian.org> | 2007-05-18

* Can define default value for rw properties with "use".
* Does not undefine other typeglobs than CODE with "unimport".

------------------------------------------------------------------------
0.05 | Piotr Roszatycki <dexter@debian.org> | 2007-05-11

* Added bundled Test/Unit/Lite.pm to MANIFEST.

------------------------------------------------------------------------
0.04 | Piotr Roszatycki <dexter@debian.org> | 2007-05-11

* use 5.006
* Test with bundled Test::Unit::Lite, so there is no dependency on
  non-core modules.
* Fixed unit tests so they work with Test::Unit and with Test::Unit::Lite.
* META.yml is generated with Makefile.PL.

------------------------------------------------------------------------
0.03 | Piotr Roszatycki <dexter@debian.org> | 2007-04-23

* Added ignore_package (rw) field, contains package names which are ignored
  from backtrace stack.
* Added ignore_level (rw) field, contains how many levels skip on backtrace
  stack.
* The default version for created exception classes is now 0.01
* META.yml created by hand.

------------------------------------------------------------------------
0.02 | Piotr Roszatycki <dexter@debian.org> | 2007-04-22

* First CPAN release.
* Module renamed to Exception::Base.

------------------------------------------------------------------------
0.01 | Piotr Roszatycki <dexter@debian.org> | 2007-04-20

* Development release.

------------------------------------------------------------------------
