Handling exceptions within if statements in Python -


is there way deal exceptions within if statements, other putting try, except bracket around whole lot, or test exception on each line in advance?

for example, had simplified code:

 if a[0] == "a":      return("foo")  elif a[1] == "b":      return("bar")  elif a[5] == "d":      return("bar2")  elif a[2] == "c":      return("bar3")  else:      return("baz")  

if a word_of_six_characters_or_more work fine. if shorter word raises exception on line elif a[5] == "d". possible test exceptions in advance (e.g. changing elif a[5] == "d" elif len(a) >5 , a[5] =="d", relies on first part being false , second never executed). question is, there other way of causing exceptions treated false , proceed next elif statement rather throwing exception - or similarly, include try except clauses within elif line?

(obviously, possible there no way, , getting confirmation adding in pre-tests exceptions how proceed know).

(i should note, code quite substantially more complicated above, , while put in pre-checks, there quite lot of them, trying see if there simpler solution.)

well, there 2 ways handle this. slice single character empty if doesn't exist. e.g.,

if a[0:1] == "a":     return("foo") elif a[1:2] == "b":     return("bar") elif a[5:6] == "d":     return("bar2") elif a[2:3] == "c":     return("bar3") else:     return("baz")  

or, write wrapper function ignore indexerrors. e.g.,

def get(obj, index):     try:         return obj[index]     except indexerror:         return  if get(a, 0) == "a":     return("foo") elif get(a, 1) == "b":     return("bar") elif get(a, 5) == "d":     return("bar2") elif get(a, 2) == "c":     return("bar3") else:     return("baz")  

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

css - Make div keyboard-scrollable in jQuery Mobile? -

ruby on rails - Seeing duplicate requests handled with Unicorn -