7、python全栈之路-异常处理

亡梦爱人 提交于 2020-03-14 11:09:25

七、异常处理

http://www.cnblogs.com/Eva-J/articles/7281240.html

1、异常处理

#处理异常

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

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

 

#异常处理的应用:

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

#2.不能用if处理了  StopIteration

 

if 是预防异常出现的

try是异常出现之后

 

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

2try...except

2.1 单个错误

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

 

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

#且一旦发生异常,try中的代码会停止在异常处

#但不影响try语句之外的代码执行

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

2.2 多个错误

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('又一个错误诞生了')

 

3ecxept..as...

显示错误具体信息

# 在我们不能完全明确的知道这个错误到底是发生了什么的时候

# 就用as 变量名,将变量中存储的错误信息打印出来

3.1 ecxept..as...

 

3.2 except Exception as e

万能异常

#对于你已经可以预见的但是不能完全规避的必须要处理的异常,

#你应该去指定他的处理方式

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

try:
    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)

 

4else语句

try语句中不会发生异常的时候就执行else中的代码

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

 

5finally

在函数里面即使有return也会执行finally里的语句,finally里的语句最后执行

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

 

6、标准格式

try:
    f = open('file')
    int(f.read())
except ValueError as t:
    print(t)
    print('读文件失败了')
except Exception as e:
    print(e)
else:
    print('成功了')   #try代码块中没有异常的时候才会被执行
finally:              #finally代码块中的代码永远执行
    print("关闭文件")
    f.close()

 

7raise

主动触发异常

raise可以主动抛异常

8assert

断言

只要条件不成立 下面代码就不执行,而且会报错

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!