Re: RFC 140 (v1) One Should Not Get Away With Ignoring System Call Errors
[email protected] (Tony Olekshy) Wed, 23 Aug 2000 08:36:03 -0600
| Newsgroups | perl.perl6.language.errors |
|---|---|
| Organization | Avra Software Lab Inc. |
| Message-ID | <[email protected]> |
Jarkko Hietaniemi wrote: > > On Tue, Aug 22, 2000 at 11:07:44PM -0700, Peter Scott wrote: > > > > I think this should be perl6-language-errors > > I scoured the -errors but all I could see was fancy-schmanzy talk > about OOish exceptions, that's why I wrote the anti-OO section. > Unless we get OO faster than its own shadow, I want OO nowhere near > low-level system calls. The exception handling mechanism proposed by RFC 88, which has been involved in much of the discussion on -errors, is a completely procedural mechanism. Also, there is a concensus on -errors that system functions automatically generate exceptions for errors only if C<use fatal;> is in scope. Objects are only used as a convenient way to represent the exceptions themselves. One could easily unbless said data strucures to get "non-OO" exceptions, and move the methods into a function library. The fields of this data structure would contain things like what are now $@, $!, $?, and $^E, probably __FILE__ and __LINE__, and maybe a few other things. The ability to use the exception class hierarchy as a convenient way to select exceptions for catching would be lost, but it could be simply replaced by a new field in the exception data structure (perhaps with some added support functions). Also, throw would be a function, not a method. Not only can RFC 88 be done without exception objects per se, the ones it does use for the purpose of discussion are about as light- weight as they get in Perl. Just a blessed hash with a few public methods. The beauty is, all the support functions are now under the Exception:: namespace, but you only have to write $@->foo(). That level of "OO" is likely to supported well by Perl 6. Certainly C<use strict 'system'> and C<use fatal> could both go in, one just typically wouldn't use both techniques together. Sorry to take time on this, but I'm not anti- or pro-OO. It's just another technique, it works well for exceptions themselves, it does not work well for exception handling itself (that is, as I said, better off being procedural). Yours, &c, Tony Olekshy PS: The current draft of RFC 88 is here: Formatted: http://www.avrasoft.com/perl/rfc/rfc88v2d5.htm POD as text: http://www.avrasoft.com/perl/rfc/rfc88v2d5.txt