From 1ce2f2c8f0c44f345fe83a43de91fc094e5a8260 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 29 May 2013 01:34:06 -0500 Subject: handle exceptions --- lib/App/REPL.pm | 17 +++++++++++++++-- lib/App/REPL/Plugin/Defaults.pm | 8 ++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/App/REPL.pm b/lib/App/REPL.pm index 6f74385..4c8110a 100644 --- a/lib/App/REPL.pm +++ b/lib/App/REPL.pm @@ -45,7 +45,12 @@ sub run { while (defined(my $line = $self->_read)) { my @result = $self->_eval($line); - $self->_print(@result); + if ($@) { + $self->_print_error($@); + } + else { + $self->_print_result(@result); + } } print "\n"; } @@ -67,7 +72,15 @@ sub _eval { return $self->_wrapped_plugin('evaluate', $line); } -sub _print { +sub _print_error { + my $self = shift; + my ($error) = @_; + + ($error) = $self->_chained_plugin('munge_error', $error); + $self->_wrapped_plugin('print_error', $error); +} + +sub _print_result { my $self = shift; my (@result) = @_; diff --git a/lib/App/REPL/Plugin/Defaults.pm b/lib/App/REPL/Plugin/Defaults.pm index f2b4705..28eb346 100644 --- a/lib/App/REPL/Plugin/Defaults.pm +++ b/lib/App/REPL/Plugin/Defaults.pm @@ -23,6 +23,14 @@ sub evaluate { return eval $line; } +sub print_error { + my $self = shift; + my ($next, $error) = @_; + + print $error, "\n" + if defined $error; +} + sub print_result { my $self = shift; my ($next, $result) = @_; -- cgit v1.2.3-54-g00ecf