首页 > 代码库 > 10、异常处理

10、异常处理

简单try块使用方法
  1. >>> a=[0,1,2,3,4,5]>>>try:...  a[10]... except IndexError:...  print index error~~~~... index error~~~~

     

 
 
 
小练习:
循环输出1~50,当键盘输入CTRL+C时,不退出程序而继续进行。
思路:当执行到第567行的时候,按下CTRL+C,程序跳到第8、9行,
            然后会继续执行到10行,之后到下一循环
  1.  1 #!/usr/bin/python 2 import time 3 for i in range(50): 4         try: 5                 print i 6                 time.sleep(3) 7                 print ~~~~ 8         except KeyboardInterrupt: 9                 print Do not stop me!10         print +++++

     

 
小练习:多次捕获异常的例子:
try里面的num可以被外面的捕获调用,因为5~11行和12~13与外层的3、4行都是并列的,因此num也是全局变量           
捕获到12行的异常后,程序就执行完了,如果不像退出,继续执行循环,则要把KeyError放到循环里面
  1.  1 #!/usr/bin/python 2 import time 3 dict={0:0,1:1,2:2,3:3,4:4,5:5} 4 input=int(raw_input(Please input a number:)) 5 try: 6         for num in range(input): 7                 try: 8                         print number ,dict[num] 9                         time.sleep(0.3)10                 except KeyboardInterrupt:11                         print Do not stop me!12 except KeyError:13         print %s not exist%num

     

小练习:raise 手动触发异常:
  1. #!/usr/bin/pythontry:        raise NameError        raise IndexErrorexcept IndexError:        print index error!!!except NameError:        print name error!!!

     

小练习:制作自定义异常
  1. #!/usr/bin/pythonclass myexcept(Exception):          -- 定义异常        passtry:                                -- 触发        raise myexceptexcept myexcept:                    -- 捕获        print My error!!!

     

小练习:else块和finally块
1、else块,代码将在try块没有异常抛出的时候执行
2、finally块,无论try块是否抛出异常,永远执行的代码(即使前面代码某处执行了sys.exit(),也就相当于退出前作的最后一件事),通常用来扫尾、关闭文件、链接等动作
3、finally要写在最后
  1.  1 #!/usr/bin/python 2 class myexcept(Exception): 3         pass 4 try: 5         pass 6 #       raise myexcept 7 except myexcept: 8         print My error!!! 9 else:10         print No exception11 finally:12         print finally print~~~

     

小练习:
无论什么异常,都用统一捕获,在except后面留空即可:
  1. #!/usr/bin/pythontry:        pass        raise Indexerror except :        print My error!!!else:        print No exceptionfinally:        print finally print~~~

     

小练习:
抛出异常时带上一段话~~~
  1. #!/usr/bin/pythonimport systry:        pass        raise IndexError,"line 5,please check it"except IndexError,data:        print data

     

10、异常处理