Python one exception multiple handlers -


i want this:

try:     raise a() except a:     print 'a' except (a, b):     print 'a,b' 

which hoped print both a , a,b.

that doesn't work (only first except executed). makes sense first except swallow error, in case want catch subclass before it's parent.

but there elegant way work?

i of course following, seemingly redundant code duplication, if more a , b involved:

try:     raise a() except a:     print 'a'     print 'a,b' except b:     print 'a,b' 

(related multiple exception handlers same exception not duplicate. usage different , want know how best handle minimal code duplication.)

it's rather common catch possible exceptions , exception type instance later:

try:     raise a() except (a, b) e:     if isinstance(e, a):         print('a')     print('a', 'b') 

another option inherit 1 class e.g.

class b(exception):     def do(self):         print('a', 'b')  class a(b, exception):     def do(self):         print('a')         super().do() 

then

try:     raise b() except (a, b) e:     e.do() 

will print a b, ,

try:     raise a() except (a, b) e:     e.do() 

will print a , a b.


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -