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