Advertisement
FilipMalczak

Python exceptions

Jan 13th, 2014
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.46 KB | None | 0 0
  1. >>> def foo(x):
  2. ...     if isinstance(x, str):
  3. ...         return {"a": 1, "b": 2}[x]
  4. ...     elif isinstance(x, int):
  5. ...         return [2, 4, 6][x]
  6. ...     else:
  7. ...         raise TypeError("...")
  8. ...
  9. >>> def test1():
  10. ...     try:
  11. ...         foo("c")
  12. ...     except:
  13. ...         print("exc")
  14. ...
  15. >>> def test2():
  16. ...     try:
  17. ...         foo("c")
  18. ...     except (KeyError, IndexError):
  19. ...         print("knownException")
  20. ...     except:
  21. ...         print("exc")
  22. ...
  23. >>> def test3():
  24. ...     try:
  25. ...         foo("c")
  26. ...     except KeyError:
  27. ...         print("key")
  28. ...     except IndexError:
  29. ...         print("index")
  30. ...     except:
  31. ...         print("exc")
  32. ...
  33. >>> import dis
  34. >>> dis.dis(test1)
  35.   2           0 SETUP_EXCEPT            14 (to 17)
  36.  
  37.   3           3 LOAD_GLOBAL              0 (foo)
  38.               6 LOAD_CONST               1 ('c')
  39.               9 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  40.              12 POP_TOP              
  41.              13 POP_BLOCK            
  42.              14 JUMP_FORWARD            18 (to 35)
  43.  
  44.   4     >>   17 POP_TOP              
  45.              18 POP_TOP              
  46.              19 POP_TOP              
  47.  
  48.   5          20 LOAD_GLOBAL              1 (print)
  49.              23 LOAD_CONST               2 ('exc')
  50.              26 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  51.              29 POP_TOP              
  52.              30 POP_EXCEPT          
  53.              31 JUMP_FORWARD             1 (to 35)
  54.              34 END_FINALLY          
  55.         >>   35 LOAD_CONST               0 (None)
  56.              38 RETURN_VALUE        
  57. >>> dis.dis(test2)
  58.   2           0 SETUP_EXCEPT            14 (to 17)
  59.  
  60.   3           3 LOAD_GLOBAL              0 (foo)
  61.               6 LOAD_CONST               1 ('c')
  62.               9 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  63.              12 POP_TOP              
  64.              13 POP_BLOCK            
  65.              14 JUMP_FORWARD            51 (to 68)
  66.  
  67.   4     >>   17 DUP_TOP              
  68.              18 LOAD_GLOBAL              1 (KeyError)
  69.              21 LOAD_GLOBAL              2 (IndexError)
  70.              24 BUILD_TUPLE              2
  71.              27 COMPARE_OP              10 (exception match)
  72.              30 POP_JUMP_IF_FALSE       50
  73.              33 POP_TOP              
  74.              34 POP_TOP              
  75.              35 POP_TOP              
  76.  
  77.   5          36 LOAD_GLOBAL              3 (print)
  78.              39 LOAD_CONST               2 ('knownException')
  79.              42 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  80.              45 POP_TOP              
  81.              46 POP_EXCEPT          
  82.              47 JUMP_FORWARD            18 (to 68)
  83.  
  84.   6     >>   50 POP_TOP              
  85.              51 POP_TOP              
  86.              52 POP_TOP              
  87.  
  88.   7          53 LOAD_GLOBAL              3 (print)
  89.              56 LOAD_CONST               3 ('exc')
  90.              59 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  91.              62 POP_TOP              
  92.              63 POP_EXCEPT          
  93.              64 JUMP_FORWARD             1 (to 68)
  94.              67 END_FINALLY          
  95.         >>   68 LOAD_CONST               0 (None)
  96.              71 RETURN_VALUE        
  97. >>> dis.dis(test3)
  98.   2           0 SETUP_EXCEPT            14 (to 17)
  99.  
  100.   3           3 LOAD_GLOBAL              0 (foo)
  101.               6 LOAD_CONST               1 ('c')
  102.               9 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  103.              12 POP_TOP              
  104.              13 POP_BLOCK            
  105.              14 JUMP_FORWARD            72 (to 89)
  106.  
  107.   4     >>   17 DUP_TOP              
  108.              18 LOAD_GLOBAL              1 (KeyError)
  109.              21 COMPARE_OP              10 (exception match)
  110.              24 POP_JUMP_IF_FALSE       44
  111.              27 POP_TOP              
  112.              28 POP_TOP              
  113.              29 POP_TOP              
  114.  
  115.   5          30 LOAD_GLOBAL              2 (print)
  116.              33 LOAD_CONST               2 ('key')
  117.              36 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  118.              39 POP_TOP              
  119.              40 POP_EXCEPT          
  120.              41 JUMP_FORWARD            45 (to 89)
  121.  
  122.   6     >>   44 DUP_TOP              
  123.              45 LOAD_GLOBAL              3 (IndexError)
  124.              48 COMPARE_OP              10 (exception match)
  125.              51 POP_JUMP_IF_FALSE       71
  126.              54 POP_TOP              
  127.              55 POP_TOP              
  128.              56 POP_TOP              
  129.  
  130.   7          57 LOAD_GLOBAL              2 (print)
  131.              60 LOAD_CONST               3 ('index')
  132.              63 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  133.              66 POP_TOP              
  134.              67 POP_EXCEPT          
  135.              68 JUMP_FORWARD            18 (to 89)
  136.  
  137.   8     >>   71 POP_TOP              
  138.              72 POP_TOP              
  139.              73 POP_TOP              
  140.  
  141.   9          74 LOAD_GLOBAL              2 (print)
  142.              77 LOAD_CONST               4 ('exc')
  143.              80 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
  144.              83 POP_TOP              
  145.              84 POP_EXCEPT          
  146.              85 JUMP_FORWARD             1 (to 89)
  147.              88 END_FINALLY          
  148.         >>   89 LOAD_CONST               0 (None)
  149.              92 RETURN_VALUE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement