Python-异常处理

今日内容 - 异常处理

处理异常:

  排错的时候,真正报错的是最下面

  python的代码是不会出错的,应该从下向上找最后一行自己写的代码去处理

异常处理的应用:

  1、可以用if规避,但是成本太高。

  2、不能用if处理了  StopIteration

异常处理的特点:一旦发生异常,程序就不再执行。

 

try:
    num = input('num : ')
    int(num)      #ValueError
    print(num)
except ValueError:
    print('请输入一个数字')

 

放在try中的代码如果遇到except中的错误类型,就会执行except中的代码

且一旦发生异常,try中的代码会停止在异常处,但不影响try语句之外的代码执行

一种错误类型只能处理对应的一种错误,其他错误还会照常报错

try:
    num = input('num : ')
    int(num)  # ValueError
    print(num)
    a
    sum(1, 2, 3)
except ValueError:
    print('请输入一个数字')
except NameError as nameerror:
    print('产生了一个%s'%nameerror)
except TypeError:
    print('又一个错误诞生了')

as:

  在我们不能完全明确的知道这个错误到底是发生了什么的时候,就用as 变量名,

  将变量中存储的错误信息打印出来。

 

万能异常:

try:
    num = input('num : ')
    int(num)  # ValueError
    # b          #NameError
    # sum(1,2,3)  #TypeError
    # dic = {}
    # dic['key']  #KeyError
    l = []
    l[1000]   #IndexError
    l = [1,23]
    l_iterator = iter(l)
    next(l_iterator)
    next(l_iterator)
    next(l_iterator)  #StopIteration
except ValueError:
    print('请输入一个数字')
except Exception as e:
    print(e)

对于你已经可以预见的但是不能完全规避的必须要处理的异常,你应该去指定它的处理方式

对于其他你不能预料的,再使用万能异常处理

异常处理中的else语句

try:
    a =1
except NameError as e:
    print(e)
else:
    print('当try语句中不会发生异常的时候执行else中的代码啦')

finally:

def func():
    try:
        f = open('file')
        int(f.read())
    except ValueError as e:
        a = 123
        return a
    finally:       #清理的工作 把之前的打开的链接 文件 都关掉
                   #避免因为程序异常造成的浪费资源和逻辑问题
                   # finally中的代码永远执行
    
        f.close()

print(func())        


 

posted @ 2017-09-13 21:29  程先生_Python  阅读(79)  评论(0)    收藏  举报