On Thu, Oct 1, 2009 at 9:53 AM,  <pugs-comm...@feather.perl6.nl> wrote:
>  The Perl 6 equivalent to Perl 5's C<eval {...}> is C<try {...}>.
>  (Perl 6's C<eval> function only evaluates strings, not blocks.)
> -A C<try> block by default has a C<CATCH> block that handles all
> +A C<try> block by default has a C<CATCH> block that handles all fatal
>  exceptions by ignoring them.  If you define a C<CATCH> block within
>  the C<try>, it replaces the default C<CATCH>.  It also makes the C<try>
>  keyword redundant, because any block can function as a C<try> block

OK; so any block with a CATCH block in it is effectively a 'try' block...

>  our multi method warn ( Object $o: ) is export
> -Prints a warning to C<$*ERR>, which is usually finds C<$PROCESS::ERR>. See
> -C<Synopsis 16: IPC / IO / Signals> for details.
> +Throws a resumable warning exception, which is considered a control
> +exception, and hence is invisible to most normal exception handlers.
> +The outermost control handler will print the warning to C<$*ERR>
> +(which is usually finds C<$PROCESS::ERR>; see C<Synopsis 16: IPC /
> +IO / Signals> for details).  After printing the warning, the exception
> +is resumed where it was thrown.  To override this behavior, catch the
> +exception in a CONTROL block.  A quietly {...} block is the opposite of a
> +try {...} block in that it will suppress any warnings but pass fatal
> +exceptions through.

...while any block with a CONTROL block in it is effectively a
'quietly' block.  Right?  If so, could this be spelled out in S04,
immediately after the discussion about 'try'?

Jonathan "Dataweaver" Lang

Reply via email to