From: Jakub Narebski <jnareb@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, "Petr Baudis" <pasky@suse.cz>,
"Alex Riesen" <raa.lkml@gmail.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: Re: [1.8.0] perl/Git.pm: moving away from using Error.pm module
Date: Mon, 21 Feb 2011 10:31:09 +0100 [thread overview]
Message-ID: <201102211031.11308.jnareb@gmail.com> (raw)
In-Reply-To: <7v4o7xluph.fsf@alter.siamese.dyndns.org>
On Mon, 21 Feb 2011, Junio C Hamano wrote:
> Jakub Narebski <jnareb@gmail.com> writes:
>
> > Proposal:
> >
> > Replace use of Error.pm module in Git.pm with either Exception::Class
> > based error class, or using 'carp'/'croak' from Carp, or both by adding
> > an option to set error handler in 'Git' class (like e.g. in 'CHI'
> > module on CPAN).
>
> Personally, I was never a big fan of the syntax magic with Error.pm, but I
> refrained from commenting on it as I am not heavily involved in that part
> of the system. If we are going to change things so that everybody uses a
> more traditional "eval {}; if ($@) { ... }", it would be a welcome change
> from my point of view.
Structured exceptions are usually better than 'die <string>' if
you need to examine error in more detail and act on this detail:
http://www.modernperlbooks.com/mt/2010/10/structured-data-and-knowing-versus-guessing.html
http://www.modernperlbooks.com/mt/2010/08/the-stringceptional-difficulty-of-changing-error-messages.html
http://www.modernperlbooks.com/mt/2010/07/dont-parse-that-string.html
I think that is why Git.pm uses Error module (which seemed like a good
choice in 2006), and it is why I propose using Exception::Class, perhaps
as an option.
> > Migration plan:
>
> Do we even need one?
>
> As far as an external caller is concerned, it would have been expecting us
> to throw an exception by dying, and it wouldn't have mattered if it used
> Error.pm or "eval { $call_to_Git_pm }; if ($@) {...}", I think.
Well, it depends if external scripts use try_git_cmd sugar... and whether
they try to act on details of caught exception.
Also if Git->repository would return 'undef' on failure instead of throwing
an exception, this would require changes to external scripts.
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2011-02-21 9:31 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-20 22:46 [1.8.0] perl/Git.pm: moving away from using Error.pm module Jakub Narebski
2011-02-21 7:20 ` Junio C Hamano
2011-02-21 9:31 ` Jakub Narebski [this message]
2011-02-21 11:02 ` Nick
2011-02-21 12:12 ` Jakub Narebski
2011-02-21 12:31 ` Ævar Arnfjörð Bjarmason
2011-04-15 23:35 ` Avner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201102211031.11308.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pasky@suse.cz \
--cc=raa.lkml@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.