R
Reto Schuettel
Hi
I'm looking for a way to raise my own exceptions over drb. It's no
problem to raise the usual/standard exceptions like ArgumentError etc.
I tried to define the Exceptions in the client and I tried to include
the DRb:RbUndumped within the Exception class, nothing worked... the
client just throws a DRb:RbConnError exception.
Can anybody help with this problem? I've attached small examples for the
server and the client...
Thanks!
reto
Server:
require 'drb/drb'
URI = "drbunix:/tmp/ruby.socket"
class Thing
include DRb:RbUndumped
def normal_exception
raise "aaah"
end
def own_exception
raise MyException
end
class MyException < Exception
# I tried to use DRb:RbUndumped on the Exception class.. didn't work
# include DRb:RbUndumped
end
end
class Srv
def get_thing
@t = Thing.new
end
end
srv = Srv.new()
#$SAFE = 1 # disable eval() and friends
DRb.start_service(URI, srv, {:verbose => true})
DRb.thread.join
Client:
require 'drb/drb'
class Thing
class MyException < Exception
end
end
uri = "drbunix:/tmp/ruby.socket"
DRb.start_service
c = DRbObject.new_with_uri(uri)
t = c.get_thing
begin
t.normal_exception
rescue RuntimeError => e
puts "Caught a RuntimeError: " + e.inspect
end
begin
t.own_exception
rescue Thing::MyException => e
puts "Caught a Thing::MyException: " + e.inspect
end
I'm looking for a way to raise my own exceptions over drb. It's no
problem to raise the usual/standard exceptions like ArgumentError etc.
I tried to define the Exceptions in the client and I tried to include
the DRb:RbUndumped within the Exception class, nothing worked... the
client just throws a DRb:RbConnError exception.
Can anybody help with this problem? I've attached small examples for the
server and the client...
Thanks!
reto
Server:
require 'drb/drb'
URI = "drbunix:/tmp/ruby.socket"
class Thing
include DRb:RbUndumped
def normal_exception
raise "aaah"
end
def own_exception
raise MyException
end
class MyException < Exception
# I tried to use DRb:RbUndumped on the Exception class.. didn't work
# include DRb:RbUndumped
end
end
class Srv
def get_thing
@t = Thing.new
end
end
srv = Srv.new()
#$SAFE = 1 # disable eval() and friends
DRb.start_service(URI, srv, {:verbose => true})
DRb.thread.join
Client:
require 'drb/drb'
class Thing
class MyException < Exception
end
end
uri = "drbunix:/tmp/ruby.socket"
DRb.start_service
c = DRbObject.new_with_uri(uri)
t = c.get_thing
begin
t.normal_exception
rescue RuntimeError => e
puts "Caught a RuntimeError: " + e.inspect
end
begin
t.own_exception
rescue Thing::MyException => e
puts "Caught a Thing::MyException: " + e.inspect
end