Kiss my DB

你所浪费的今天,正是昨日我熬到深夜所期待的明天...珍惜当下,无论生活工作

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
简单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/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

     

posted on 2014-10-07 17:58  小kiss  阅读(232)  评论(0编辑  收藏  举报