异常处理

1.单分支

l=["login","register"]
for num, i in enumerate(l ,1):
    print(num,i)
try:
    num=int(input("num>>>"))
    print(l[num-1])
except ValueError:
    print("请输入一个数字")

1 login
2 register
num>>>fdgfdgfdgfdgfdgfdgsdfg
请输入一个数字

 2.多分支

l = ['login','register']
for num,i in enumerate(l,1):
    print(num,i)
try:
    num = int(input("nnn<<<"))
    print(l[num-1])
except ValueError:
    print("请输入一个数字,并且是整数")
except IndexError:
    print("只能输入1或者2,不能超过2")


1 login
2 register
nnn<<<4
只能输入1或者2,不能超过2

 3.多分支合并

l = ['login','register']
for num,i in enumerate(l,1):
    print(num,i)

try:
    num = int(input('num >>>'))
    print(l[num - 1])
except (ValueError,IndexError) :
    print('您输入的内容不合法')

1 login
2 register
num >>>l
您输入的内容不合法

万能异常    在python的异常中,Exception 表示万能异常,可以捕捉任意的异常

except Exception as e   将具体的错误信息打印出来
s1="hello"
try:
    int(s1)
except Ecception as e :
    print(e)

invalid literal for int() with base 10: 'hello'

多分支 + 万能异常 : 万能异常应该永远放在异常处理的最下面
def buy():
print('buy')
name

def back():
print('back')
[][1]

def show():
print('show')
1/0

def main():
l = [('购物',buy),('退货',back),('查看订单',show)]
while True:
for num,i in enumerate(l,1):
print(num,i[0])
try:
num = int(input('num >>>'))
print(l[num - 1])
func = l[num - 1][1]
func()
except (ValueError,IndexError) :*********************************
print('您输入的内容不合法')
except Exception as e:*******************************
print(e)
#print(e.args,e.__traceback__.tb_lineno,e.__traceback__.tb_frame)
print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
main()

 总结:

try:

  pass

except(ValueError,IndexError)

是针对性的处理

except Exception as e :

  print(e)

通用性的处理

 

 

异常处理的其他操作

else分支:当try中的代码没有异常时,就执行else分支。

finally分支:不论try中的内容有没有异常,都会执行finally分支中的内容,常用来回收一些操作系统的资源:

主要进行数据库的连接,打开文件的句柄,网络连接等。

 

try:
#     f = open('www','w')
#     f.read()
# finally:   # 即使遇到报错,程序结束,也会先执行finally中的代码,然后再结束程序
#     f.close()
#     print('文件已经关闭了')

 

 

 

主动抛出异常断言:

raise ValueError('你写的不对')

断言:assert

只接受布尔值

自定义异常:

在最外层的异常处理应该在所有开发完成之后猜进行异常处理

 

posted @ 2018-08-22 17:49  魏三斗  阅读(233)  评论(0编辑  收藏  举报