一、异常处理
number = 100
def func():
global number
number += 1
def chu(a, b):
return a / b
print("---------->")
"""
try:
可能出现异常的代码
except:
如果有异常的代码
[finally:
无论是否存在异常都会执行的代码]
异常捕获:
情况一:可能出现多种异常
try:
可能出现异常的代码
except 异常的类型1:
如果有异常的代码
except 异常的类型2:
如果有异常的代码
情况二:获取Exception报错的原因
try:
可能出现异常的代码
except 异常的类型1:
如果有异常的代码
except 异常的类型2:
如果有异常的代码
except Exception as err:
print(err)---->err内容就是错误原因
情况三:else和return只能用一种
try:
可能出现异常的代码
except 异常的类型1:
如果有异常的代码
except 异常的类型2:
如果有异常的代码
except Exception as err:
print(err)---->err内容就是错误原因
else:
print("没有异常时候执行")
或者:
try:
可能出现异常的代码
except 异常的类型1:
如果有异常的代码
except 异常的类型2:
如果有异常的代码
except Exception as err:
print(err)---->err内容就是错误原因
return "异常中直接返回终止处理"
情况四:finally,不管报不报异常都会处理
# 文件操作(释放资源) stream = open() stream.read() stream.close()
# 数据库操作:close()
try:
可能出现异常的代码
except:
如果有异常的代码
finally:
无论是否存在异常都会执行的代码
异常多种情况匹配顺序原则:
是从上往下,因此exception需要放到最后执行
else 和return 只能用一种
"""
def add():
try:
a = int(input("输入第一个数字:"))
b = int(input("输入第二个数字:"))
operator = input("输入运算符号:(+、—、*、/):")
result = 0
if operator == "+":
result = a + b
print("和:", result)
elif operator == "-":
result = a - b
print("减:", result)
elif operator == "*":
result = a * b
print("乘:", result)
elif operator == "/":
result = a / b
print("除:", result)
else:
print("符号输出有误!")
with open("result.txt", 'a', encoding="utf8") as w_stream:
w_stream.write("本次运算的结果:{}".format(result))
except ZeroDivisionError:
print("除数不能为零!")
except ValueError:
print("参数必须是数字!")
except Exception as err:
print("出错了!", err)
return "出错了!"
else:
print("没有异常才做执行的代码块!,如果异常中有return就不添加else")
def fun():
"""
释放资源
:return:
"""
stream = None
try:
stream = open("result.txt", 'r', encoding="utf8")
content = stream.read()
print(content)
return 1
except Exception as err:
print(err)
return 2
finally:
if stream:
stream.close()
return 3
y = fun()
print(y)
二、自定义异常
def register():
username = input("请输入用户名:")
if len(username) < 6:
raise Exception("用户名小于6位,必须6位以上")
else:
print("输入的用户名:", username)
try:
register()
except Exception as err:
print(err)
print("注册失败!")
else:
print("注册成功!")
总结
"""
异常
语法错误
系统抛出异常
处理异常
try:
可能发生异常的代码
except:
有异常才会进入的代码
except 异常类型 as err:
pass
else:
没有异常才会进入的
finally:
无论有没有异常都会执行的代码
抛出异常:
手动抛出:raise
格式:
raise 异常类型("提示信息")
"""