result = None
try:
result = add_ints(10, 20)
except:
result = -1
assert result == 30
try:
a = add_ints(1, 2)
b = add_ints(3, 4)
c = add_ints(a, b)
except:
c = -1
assert c == 10
try:
nested = add_ints(add_ints(1, 2), add_ints(3, 4))
except:
nested = -1
assert nested == 10
handler_result = None
try:
raise ValueError('error')
except ValueError:
handler_result = add_ints(100, 200)
assert handler_result == 300
try:
raise TypeError('error')
except TypeError:
x = add_ints(5, 5)
y = add_ints(10, 10)
handler_sum = add_ints(x, y)
assert handler_sum == 30
exc_with_ext = None
try:
raise ValueError('test')
except ValueError as e:
prefix = concat_strings('caught: ', repr(e))
exc_with_ext = prefix
assert exc_with_ext == "caught: ValueError('test')"
else_result = None
try:
x = 1 except:
else_result = -1
else:
else_result = add_ints(50, 50)
assert else_result == 100
try:
pass
except:
else_multi = -1
else:
p = add_ints(1, 2)
q = add_ints(3, 4)
else_multi = add_ints(p, q)
assert else_multi == 10
finally_result = None
try:
x = 1
finally:
finally_result = add_ints(25, 75)
assert finally_result == 100
finally_after_exc = None
try:
raise ValueError('error')
except ValueError:
pass
finally:
finally_after_exc = add_ints(1, 99)
assert finally_after_exc == 100
try:
pass
finally:
f1 = add_ints(10, 20)
f2 = add_ints(30, 40)
finally_multi = add_ints(f1, f2)
assert finally_multi == 100
all_phases = []
try:
all_phases.append(add_ints(1, 0)) raise ValueError('error')
except ValueError:
all_phases.append(add_ints(2, 0)) finally:
all_phases.append(add_ints(3, 0)) assert all_phases == [1, 2, 3]
no_exc_phases = []
try:
no_exc_phases.append(add_ints(10, 0)) except:
no_exc_phases.append(-1)
else:
no_exc_phases.append(add_ints(20, 0)) finally:
no_exc_phases.append(add_ints(30, 0)) assert no_exc_phases == [10, 20, 30]
outer_val = None
inner_val = None
try:
outer_val = add_ints(100, 0)
try:
inner_val = add_ints(200, 0)
raise ValueError('inner')
except ValueError:
inner_val = add_ints(inner_val, 50)
except:
outer_val = -1
assert outer_val == 100
assert inner_val == 250
post_try = None
try:
pre = add_ints(5, 5)
except:
pre = -1
post_try = add_ints(pre, 10)
assert post_try == 20
finally_with_propagate = None
try:
try:
finally_with_propagate = add_ints(0, 0) raise KeyError('unhandled')
except ValueError:
pass finally:
finally_with_propagate = add_ints(42, 0) except KeyError:
pass assert finally_with_propagate == 42
handler_before_raise = None
try:
try:
raise ValueError('original')
except ValueError:
handler_before_raise = add_ints(10, 0) raise TypeError('from handler')
except TypeError:
pass
assert handler_before_raise == 10
else_before_raise = None
try:
try:
pass except:
pass
else:
else_before_raise = add_ints(20, 0) raise ValueError('from else')
except ValueError:
pass
assert else_before_raise == 20
state_before = add_ints(1000, 0)
state_after = None
try:
state_after = add_ints(state_before, 1)
raise ValueError('test')
except ValueError:
state_after = add_ints(state_after, 10)
finally:
state_after = add_ints(state_after, 100)
assert state_after == 1111
which_handler = None
try:
raise TypeError('test')
except ValueError:
which_handler = add_ints(1, 0)
except TypeError:
which_handler = add_ints(2, 0)
except KeyError:
which_handler = add_ints(3, 0)
assert which_handler == 2
finally_after_handler_raise = None
try:
try:
raise ValueError('original')
except ValueError:
finally_after_handler_raise = add_ints(10, 0) raise TypeError('from handler')
finally:
finally_after_handler_raise = add_ints(finally_after_handler_raise, 5)
except TypeError:
pass
assert finally_after_handler_raise == 15
finally_with_pending_exc = None
try:
try:
finally_with_pending_exc = add_ints(0, 0)
raise KeyError('no handler')
except ValueError:
pass finally:
finally_with_pending_exc = add_ints(100, 0)
except KeyError:
pass assert finally_with_pending_exc == 100
finally_return_result = None
try:
finally_return_result = 'in_try'
finally:
pass assert finally_return_result == 'in_try'
multi_finally = None
try:
try:
raise ValueError('test')
except TypeError:
pass finally:
a = add_ints(1, 2)
b = add_ints(3, 4)
multi_finally = add_ints(a, b)
except ValueError:
pass
assert multi_finally == 10