zoukankan      html  css  js  c++  java
  • 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/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
  • 相关阅读:
    如何删除日志?
    sql lock
    生成DAL
    字符串ID替换
    精典SQL:分组合并列值
    SQL Server2005 XML数据类型基础
    Buckup
    SQL试题
    SQL处理表重复记录
    Left Join 中on与where的区别
  • 原文地址:https://www.cnblogs.com/kissdb/p/4009600.html
Copyright © 2011-2022 走看看