Tango exceptions

To raise a Tango exception say:

if not doorname: 
    PyTango.Except.throw_exception( "n.n.",
                                    "no doorname supplied",
                                    "vc_pilatus.__init__")

To re-throw an exception use:

try:
    door = PyTango.DeviceProxy( doorname)
except PyTango.DevFailed as e:
    PyTango.Except.re_throw_exception( e, 
                                       "from DeviceProxy",
                                       "failed to create proxy to door %s " % doorname,
                                       "Hasylab.getSardanaProxies")

This is how an exception is caught:

#!/usr/bin/env python
import PyTango

try:
	dev = PyTango.DeviceProxy( "abc")
except PyTango.DevFailed as e:
	PyTango.Except.print_exception( e)

To customize the ouput:

try:
    val = proxy.read_attribute( attr).value
except PyTango.DevFailed as e:
    print( "        %-15s: error" % (attr))
    for arg in e.args: 
        print( "          Desc: %s" % (arg.desc))
        #print( "origin: %s" % (arg.origin))
        #print( "reason: %s" % (arg.reason))
        #print( "severity: %s" % (arg.severity))