[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...

Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby

9 messages 2001/06/15

[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>

I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>

Next week I'll try to rebuild Ruby with Unicode strings. But it would be

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

On Tue, 26 Jun 2001, Aleksei Guzev wrote:

[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive)

From: David Alan Black <dblack@...>
Date: 2001-06-29 15:06:32 UTC
List: ruby-talk #17066
Hello --

On Fri, 29 Jun 2001, Yukihiro Matsumoto wrote:

> Hi,
>
> In message "[ruby-talk:17037] keeping an Exception object alive"
>     on 01/06/29, David Alan Black <dblack@candle.superlink.net> writes:
>
> |What I'm left wondering is why there's no Exception#message= method,
> |which could be used directly and/or perhaps in the background of
> |Exception#exception.  (So that 'raise ne, "message"' would raise ne
> |itself, first changing its message, rather than creating a new
> |object.)
>
> How about making it RCR?  Since Mike Wilson has not appeared for a
> while, would somebody update the entry?  Guy, would you?

OK, I declare it an RCR :-)  And I'd be glad to put it on the wiki if
no one else does.

Details:

-- add a new method Exception#message=(aString)
-- change behavior of Exception#exception so that if the receiver is
   an Exception (or descendant) object, it returns the receiver whether
   or not a second argument (message) is specified.  Any such second
   argument becomes the receiver's message.

(This should take care of the #raise behavior described above.)

In case anyone wants to try it out, you can use this:

   class Exception
     alias :oldexception :exception
     def exception(*m)
       if kind_of? Exception
	 self.message = m[0] if m[0]
	 return self
       else
	 return oldexception(m)
       end
     end
   end

together with this patch against 1.6.4 error.c (which may be a bit
hackish in terms of namespaces and so on but should be serviceable):


*** error.c	Thu Jun 28 19:59:34 2001
--- error.c	Fri Jun 29 10:53:37 2001
***************
*** 305,306 ****
--- 305,314 ----
  static VALUE
+ exc_set_mesg(exc, mesg)
+      VALUE exc, mesg;
+ {
+   STR2CSTR(mesg); /* ensure mesg can be converted to String */
+   return rb_iv_set(exc, "mesg", mesg);
+ }
+
+ static VALUE
  exc_initialize(argc, argv, exc)
***************
*** 554,555 ****
--- 562,564 ----
      rb_define_method(rb_eException, "set_backtrace", exc_set_backtrace, 1);
+     rb_define_method(rb_eException, "message=", exc_set_mesg, 1);


(By the way, the reason I fastened on to this in the first place was
that I had added a hook to NameError and wanted to propagate the exact
object upwards, so that the stuff hanging on the hook would not
disappear.)


David

-- 
David Alan Black
home: dblack@candle.superlink.net
work: blackdav@shu.edu
Web:  http://pirate.shu.edu/~blackdav

In This Thread