Hi,

TSa wrote:
> Yuval Kogman wrote:
>> On Wed, Sep 28, 2005 at 11:46:37 -0500, Adam D. Lopresto wrote:
>>>thinking for a while.  In short, I propose that "use fatal" be on by
>>>default, and that "err" be turned into syntactic sugar for a very
>>>small try/CATCH block.
>> 
>> I like it a lot. It gives the advantages of both the flexible, more
>> robust try/catch, and the (locally) concise, clear error return.
> 
> I don't like it at all. I fear, that we mix two orthogonal concepts
> just because it is convenient.

I agree with you, TSa. I'd like to add that we don't have to do without
convenience in the majority of cases:

    use fatal;

    for @files {
        my $fh = try { open $_ } err next;

        load_config_from($fh);
    }

* try {...} is, like Perl 5's eval {...}, *not* statement-level.
  This means you can easily wrap it around an expression.
  Particularly you can write
      my $fh = try { open $_ } err next;  # instead of

      my $fh;
      try {
          $fh = open $_;
          CATCH { next }
      };

* Yes, "try {...} err ..." does not check the exception type, but
  the proposed "... err ..." doesn't either.

* "try { foo() } err next" will next even if foo() did not throw
  an exception, but returned undef. But I don't think that's a problem
  in most cases. One can always do:
      try { foo(); 1 }


FWIW, I also agree with Darren that "use fatal" should be on by default.


--Ingo

Reply via email to