SVN::Web::X - exceptions for SVN::Web
use SVN::Web::X; ... SVN::Web::X->throw(error => '(error message %1)', vars => [$var_to_interpolate]);
SVN::Web::X implements exceptions for SVN::Web. Derived from Exception::Class, It provides a simple mechanism for throwing exceptions, catching them, and ensuring that friendly, localised error messages are generated and sent to the user's browser.
If an SVN::Web action that you are writing needs to stop processing and raise an error, throw an SVN::Web::X exception.
throw() takes a hash with two mandatory keys.
throw()
error
A string describing the error. This string should be short, and key to a longer internationalised message.
This string may contain placeholders; %1, %2, %3, and so on. These will be replaced by the values of the variables passed in the vars key.
vars
By convention this string should be enclosed in parentheses, ( and ). This helps make them stand out in the interface, if localised versions of the error message have not yet been written.
(
)
An array reference. The first entry in the array will replace the %1 placeholder in error, the second entry will replace the %2 placeholder, and so on.
%1
%2
If there are no placeholders then pass a reference to an empty array.
In the action:
sub run { ... if(! frob_repo()) { SVN::Web::X->throw(error => '(frob failed)', vars => []); } ... }
In the en.po file for the localised text.
msgid "(frob failed)" msgstr "There was a problem trying to frob the repository. This " "probably indicates a permissions problem."
sub run { ... # $path is a repo path, $rev is a repo revision my $root = $fs->revision_root($rev); my $kind = $root->check_path($path); if($kind == $SVN::Node::none) { SVN::Web::X->throw(error => '(path %1 does not exist in rev %2)', vars => [$path, $rev]); } }
msgid "(path %1 does not exist in rev %2)" msgstr "The path <tt>%1</tt> could not be found in the repository " "at revision %2. This may be a typo in the path or the revision " "number. SVN::Web should never normally generate a link like this. " "If you followed a link from SVN::Web (rather than from an e-mail, "or similar) please report this as a bug."
As you can see, the localised text can be much friendlier and more informative to the user than the error message.
Copyright 2003-2004 by Chia-liang Kao <clkao@clkao.org>.
<clkao@clkao.org>
Copyright 2005-2007 by Nik Clayton <nik@FreeBSD.org>.
<nik@FreeBSD.org>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
To install SVN::Web, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SVN::Web
CPAN shell
perl -MCPAN -e shell install SVN::Web
For more information on module installation, please visit the detailed CPAN module installation guide.