I've realised that I have a much better understanding of the semantics of languages that are value oriented. You avoid murky questions like this: try: raise Exception('') except: return 1 finally: return 2 There's no 'right' answer here when choosing how a PL should work.