码迷,mamicode.com
首页 > 其他好文 > 详细

10、异常处理

时间:2014-10-07 19:26:43      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   使用   ar   for   

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

     

 
 
bubuko.com,布布扣
 
小练习:
循环输出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/python
    try:
            raise NameError
            raise IndexError
    except IndexError:
            print index error!!!
    except NameError:
            print name error!!!

     

小练习:制作自定义异常
  1. #!/usr/bin/python
    class myexcept(Exception):          -- 定义异常
            pass
    try:                                -- 触发
            raise myexcept
    except 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 exception
    11 finally:
    12         print finally print~~~

     

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

     

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

     

10、异常处理

标签:style   blog   http   color   io   os   使用   ar   for   

原文地址:http://www.cnblogs.com/kissdb/p/4009600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!