From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19249 invoked from network); 28 Sep 2005 08:43:41 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 28 Sep 2005 08:43:41 -0000 Received: (qmail 44368 invoked from network); 28 Sep 2005 08:43:34 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 28 Sep 2005 08:43:34 -0000 Received: (qmail 28123 invoked by alias); 28 Sep 2005 08:43:26 -0000 Mailing-List: contact zsh-users-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9453 Received: (qmail 28112 invoked from network); 28 Sep 2005 08:43:26 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 28 Sep 2005 08:43:26 -0000 Received: (qmail 43283 invoked from network); 28 Sep 2005 08:43:26 -0000 Received: from ns9.hostinglmi.net (213.194.149.146) by a.mx.sunsite.dk with SMTP; 28 Sep 2005 08:43:24 -0000 Received: from 212.red-80-35-44.staticip.rima-tde.net ([80.35.44.212] helo=localhost) by ns9.hostinglmi.net with esmtpa (Exim 4.52) id 1EKXXC-0002nh-FT; Wed, 28 Sep 2005 10:43:26 +0200 Date: Wed, 28 Sep 2005 10:43:45 +0200 From: DervishD To: Bart Schaefer Cc: Zsh Users Subject: Re: About zsh-users 8489 (exception handling) Message-ID: <20050928084345.GB1384@DervishD> Mail-Followup-To: Bart Schaefer , Zsh Users References: <20050927234726.GC988@DervishD> <1050928024249.ZM23758@candle.brasslantern.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1050928024249.ZM23758@candle.brasslantern.com> User-Agent: Mutt/1.4.2.1i Organization: DervishD X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - ns9.hostinglmi.net X-AntiAbuse: Original Domain - sunsite.dk X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - dervishd.net X-Source: X-Source-Args: X-Source-Dir: X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.0.4 Hi Bart :) You came to the rescue, as always ;) * Bart Schaefer dixit: > On Sep 28, 1:47am, DervishD wrote: > : > : In zsh-users 8489 Bart Schaeffer proposes using this syntax: > : > : { ${:?THROW} } 2>/dev/null > : > : Unfortunately, that doesn't work because ${:?...} *exits* from > : the shell > Not in an interactive shell, it doesn't. However ... But I use (or will use) throw mainly in scripts, and that makes the script to exit. And probably the 90% of throw/catch usage will take place in scripts, not in interactive shells... > : Is there any other way of generating an error (the exception) without > : using a subshell and without using current invalid syntax that could > : become valid in the future? > > Yes. If you declare (at the top of the throw function) > > readonly THROW > > then > > THROW= 2>/dev/null > > causes the error, which can be caught with "always". You don't even > need the extra layer of { }. I like this a lot, because it uses only > valid syntax that is pretty much guaranteed always to remain valid. That's VERY clever, dude :))) I like this solution a lot :) > I think EXCEPTION should also be declared with "typeset -g", so that > makes the complete function look like: But the function will work correctly even without "typeset -g", wouldn't it? Wouldn't be needed "typeset -g" in "catch" too for the CAUGHT parameter? Thanks a lot for your answer :) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net http://www.pleyades.net & http://www.gotesdelluna.net It's my PC and I'll cry if I want to...