异常处理

try...except...

while True:
    num1 = input("num1:")
    num2 = input("num2:")
    try:
        num1 = int(num1)
        num2 = int(num2)
        result = num1 + num2
    #按错误类型捕获
    except ValueError as ex:
        print(ex)
    except Exception as ex:
        print(ex)
    #要放在最后执行
    except Exception as ex:
        print(ex)             #执行内部__str__方法

 

完整代码流程:

 

 

主动触发异常:raise

try:
    raise Exception("zhudong")   #可以是其他细分错误, self.message = "zhudong"
    print(1234)                  
except ......
    .    print(ex)               #__str__, return self.message
    . 
    . 
断言:
    assert 1==1     #True执行 False报错
    p =object()
    p.status = True
    p.start()       #应该先执行一个assert p.status == False

 

try...finally

假如你在都一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,就可以使用finally块来完成。注意,在一个try块下,可以同时使用except从句和finally块。如果你要同时使用他们的话,需要把一个嵌入另外一个。

示例:

import time

try:
    f = file("poem.txt")
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        time.sleep(2)
        print(line)
finally:
    f.close()
    print("Cleaning up...closed the file")

在运行时,按Ctrl+c中断

 

posted @ 2016-11-30 15:39  橡皮头  阅读(166)  评论(0编辑  收藏  举报