前言
当程序中间的某一段代码出现错误时,该错误则会终止整个程序。影响后面的代码运行。这次分享的就是用来解决程序报错的问题的。
异常捕获
异常捕获的作用 : 当程序报错时,不会终止程序。用于避免一段代码出错而终止后面的代码
-
普通异常
# 基本语法格式: try: pass except: pass
其语意可以理解为: 如果 try 里面的代码执行不了,则执行 except 中的代码。若 try 中的代码可以执行,则不执行 except 中的代码
try:
print(1/0)
except:
print("我是except")
# 输出结果
我是except # 很显然,1/0 会报错。所以执行except中的代码
- 捕获多种异常
基本语法: try-except-except...
try:
int("a")
except IndexError as e:
print(e)
except ValueError as e:
print(e)
except SyntaxError as e:
print(e)
# 输出结果:
invalid literal for int() with base 10: 'a'
xxx as e : 意思是给 xxx 重命名为 e
- 捕获所有异常
try:
int('a')
except Exception as e:
print(e)
# 输出结果:
invalid literal for int() with base 10: 'a'
- try-except-else 语句
try:
int(1.2)
except Exception as e:
print(e)
else:
print("没有报错,则执行else")
# 输出结果:
没有报错,则执行else
当程序没有报错时,则执行else中的代码
- try-except-else-finally 语句
try:
int('a')
except Exception as e:
print(e)
else:
print("没有报错,则执行else")
finally:
print('无论是否报错,都执行finally')
# 输出结果:
invalid literal for int() with base 10: 'a'
无论是否报错,都执行finally
无论是否报错,都会执行finally中的代码
主动抛出异常
当程序不满足一个条件是,则主动抛出异常
def func(num):
if num < 100:
raise Exception("数字小于100")
try:
num = int(input("请输入一个数字:"))
func(num)
except Exception as e:
print(e)
else:
print("数字大于100")
自定义异常类
需要继承Exception类实现
# 自定义异常:继承Exception
class FuncError(Exception):
def __init__(self, error):
self.error = error
try:
raise FuncError("error参数")
except FuncError as e:
print(e)
断言
断言可以用于自动化测试
print("断言前")
assert 1 == 1
print("断言后")
# 输出结果:
断言前
断言后
print("断言前")
assert 1 == 2
print("断言后")
# 程序之后输出前面的代码,后面的代码会报错
总结
这章的内容比较简单。欢迎各位大佬评论交流。也欢迎各位大佬批评指正。