1. try 与 except
范例1:
单分支
try:
ret = int(input("number >>>"))
print(ret*"*")
except ValueError:
print("您输入的内容有误,请输入一个数字")
执行结果:
number >>>a
您输入的内容有误,请输入一个数字
范例2:多分支
try:
[][3]
ret = int(input("number >>>"))
print(ret*"*")
except ValueError:
print("您输入的内容有误,请输入一个数字")
except IndexError:
print("超出列表的最大长度了")
执行结果:
超出列表的最大长度了
范例3:万能异常
try:
print("1111")
1/0
name
[][3]
{}["k"]
ret = int(input("number >>>"))
print(ret*"*")
except Exception:
print("你错了,老铁")
执行结果:
1111
你错了,老铁
范例4:else
try:
print("1111")
#1/0
print("2222")
#name
#[][3]
#{}["k"]
ret = int(input("number >>>"))
print(ret*"*")
except ValueError:
print('输入的数据类型有误')
except Exception:
print("你错了,老铁")
else:
print("没有异常的时候执行else中的代码")
执行结果:
1111
2222
number >>>11
***********
没有异常的时候执行else中的代码
范例5:finally
try:
print("1111")
#1/0
print("2222")
#name
#[][3]
#{}["k"]
ret = int(input("number >>>"))
print(ret*"*")
except ValueError:
print('输入的数据类型有误')
except Exception:
print("你错了,老铁")
else:
print("没有异常的时候执行else中的代码")
finally:
print("======")
执行结果:
1111
2222
number >>>3
***
没有异常的时候执行else中的代码
======
范例6:finally的文件应用
def func():
try:
f = open('file','w')
''''''
return True
except:
return False
finally:
print('执行finally了')
f.close()
print(func())
执行结果:
执行finally了
True
范例7:
try:
print("1111")
#1/0
print("2222")
#name
#[][3]
#{}["k"]
ret = int(input("number >>>"))
print(ret*"*")
except Exception as error:
print("你错了,老铁",error)
执行结果:
1111
2222
number >>>aaa
你错了,老铁 invalid literal for int() with base 10: 'aaa'
2. 小结
# 程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容
# 使用try和except就能处理异常
#try是我们需要处理的代码
#except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码
#except支持多分支
#有没有一个能处理所有错误的类型 : Exception
# 有了万能的处理机制仍然需要把能预测到的问题单独处理
# 单独处理的所有内容都应该写在万能异常之前
# else : 没有异常的时候执行else中的代码
# finally : 不管代码是否异常,都会执行
# finally和return相遇的时候 依然会执行
# 函数里做异常处理用,不管是否异常去做一些收尾工作