[Tutor] using exceptions to implement case/switch?

Alan Gauld alan.gauld at freenet.co.uk
Sat Oct 16 00:58:15 CEST 2004

> case parts when special keys are hit.  Rather than doing this with a
set of
> ``if'' statements, this could be done using exceptions, perhaps as
in the
> code below.

But you are using if statement anyway - the worst of both worlds.

The normal way would be a chain of elif statement.

> if ascii.isprint(c) : return c
> if c == curses.KEY_F1 : raise keyf1

  if c == curses.KEY_F1: process_keyF1()
  elif c == curses.KEY_F2: process_keyF2()

Or more efficiently still, put the key/functon pairs in
a dictionary:

keys = { curses.KEY_F1: process_keyF1,
         curses.KEY_F2: process_keyF2,

# code as before until:
if ascii.isprint(c) : return c
try: keys[c]()
except KeyError: print 'No such key'


Alan G.

More information about the Tutor mailing list