41_exception.py 982 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. try:
  2. for i in range(5):
  3. raise KeyError(i)
  4. exit(1)
  5. except KeyError:
  6. pass
  7. x = 0
  8. for i in range(5):
  9. try:
  10. for j in range(5):
  11. while True:
  12. raise KeyError(i)
  13. x += 3
  14. except KeyError:
  15. x += i
  16. assert x == 10
  17. class A:
  18. def __getitem__(self, i):
  19. raise KeyError(i)
  20. try:
  21. a = A()
  22. b = a[1]
  23. exit(1)
  24. except:
  25. pass
  26. try:
  27. a = {'1': 3, 4: None}
  28. x = a[1]
  29. exit(1)
  30. except:
  31. pass
  32. assert True
  33. def f():
  34. try:
  35. raise KeyError('foo')
  36. except A: # will fail to catch
  37. exit(1)
  38. except:
  39. pass
  40. assert True
  41. f()
  42. def f1():
  43. try:
  44. assert 1 + 2 == 3
  45. try:
  46. a = {1: 2, 3: 4}
  47. x = a[0]
  48. except A:
  49. exit(1)
  50. except B:
  51. exit(1)
  52. exit(1)
  53. try:
  54. f1()
  55. exit(1)
  56. except KeyError:
  57. pass
  58. assert True, "Msg"
  59. try:
  60. assert False, "Msg"
  61. exit(1)
  62. except AssertionError:
  63. pass