* try: ... except: ... finally: ...
# 当程序在运行时 可能会出现某些特殊情况导致程序运行停止 这个时候我们就需要抛出异常进行处理 # 如果不进行异常捕获的话 在出异常后的代码是不会接着运算的 # except 可以抛出多个异常进行处理 不同异常会根据不同except处理 # 当程序运行出错后,会自己抛出一个异常,这个异常会与下方except后的异常名比较,如果比较相同或辈分更小,则执行自己定义的异常下的处理办法 # 如果有多个(except 异常类型:)抛出 那么except Exception: 由于辈分最大 所以要放在最后 否则会捕捉所有抛出的异常 # 当except Exception: 捕捉异常但不知道是哪里出错 可以使用 except Exception as err: print(err) 进行打印err出错日志 err->相应异常类型对象
# 格式
'''
try:
可能会出现异常的代码
except 异常类型1:
如果出现异常则执行的代码
except 异常类型2...:
如果出现异常则执行的代码
except Exception as err:
如果出现的异常没有被catch 由于Exception辈分最大 所以会全部接收
finally:
不管出不出异常都会执行的代码
'''
使用一个计算器方法测试一下文章来源:https://www.toymoban.com/news/detail-407697.html
def calculator():
try:
a = int(input('输入第一个数:'))
b = int(input('输入第二个数:'))
per = input('输入运算符号(+ - * /):')
result = 0
if per == '+':
result = a + b
elif per == '-':
result = a - b
elif per == '*':
result = a * b
elif per == '/':
result = a / b
else:
print('输入符号出错!')
print(f'计算结果为:{result}')
# 抛出数值异常 ValueError
except ValueError:
print('只能输入数字进行运算!')
# 抛出x/0异常 ZeroDivisionError
except ZeroDivisionError:
print('输入数字不能为0!')
except Exception as err:
print('运行出错!', err)
# calculator()
在 try: 中的代码块如果出现异常,会根据我们下方抛出的不同异常进行捕获(ValueError - ZeroDivisionError - Exception),并且进行不同的异常处理.文章来源地址https://www.toymoban.com/news/detail-407697.html
'''
try:
可能会出现异常的代码
except 异常类型1:
出现异常如何处理的代码
else:
如果try中没有出现异常则运行的代码
**注意:如果使用else则不能在try中出现return 否则else中代码不会执行
'''
# 下面函数中 如果更换文件地址会报异常 No such file or directory 并且报异常后不会执行else中的代码 # 如果没有异常 则try中代码运行完毕后 会接着运行else中的代码
def error_test():
try:
with open(r'E:\a1\copy1\test1\test1.txt', encoding='utf-8') as wStream:
stream_read = wStream.read()
print(stream_read)
# return 1 # 加上return后 else中代码块显示 **This code is unreachable
except Exception as err:
print('出错了!', err)
else:
print('文件读取完毕!')
error_test()
* raise
# raise -> 在函数中我们可以在可能出异常的地方手动抛出一个异常 # raise 异常类型('提示信息')
def register():
name = input('请输入用户名:')
if len(name) < 6:
# 如果输入的用户名小于6 则手动抛出异常
raise Exception('用户名长度必须六位以上!')
else:
print('注册成功')
# 在当我们调用这个函数时 可以使用try ... except 来捕获这个异常 # 如果try:代码块中有raise关键字抛出异常 except就会捕获这个抛出的异常并进行异常处理
try:
register()
except Exception as err:
print('出错了!', err) # 报错打印结果 -> '出错了! 用户名长度必须六位以上!'
到了这里,关于从零学习python - 10程序中的异常处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!