------------------------------------------------------------------------
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.
------------------------------------------------------------------------