1:try-except 语句
基本结构如下:
try:
# 可能会引发异常的代码块
except ExceptionType as e:
# 当指定类型的异常被抛出时,执行这里的代码块来处理异常
# 'e' 可以获取异常对象,以便获取更多异常相关的信息
多个 except 子句来处理不同类型的异常:
try:
# 可能会引发异常的代码块
except ExceptionType1 as e1:
# 处理异常类型 1
except ExceptionType2 as e2:
# 处理异常类型 2
except Exception as e:
# 处理其他未被前面特定异常类型捕获的异常
try-except-else-finally 结构:
#else 子句:当 try 子句中的代码没有引发异常时执行。
#finally 子句:无论是否发生异常,都会执行其中的代码,常用于进行一些清理操作,比如关闭文件、释放资源等。
try:
# 可能会引发异常的代码块
except ExceptionType as e:
# 处理异常
else:
# 没有异常时执行
finally:
# 无论是否有异常都会执行
自定义异常:
class CustomException(Exception):
pass
try:
raise CustomException("这是一个自定义异常")
except CustomException as e:
print(e)
捕获多个异常类型:
try:
# 可能引发异常的代码
except (ExceptionType1, ExceptionType2) as e:
# 处理多个指定类型的异常
2:assert
基本语法如下:
assert condition, "optional error message"
#condition:要检查的条件表达式。
#"optional error message":可选的错误信息,如果条件不为真,这个信息将作为AssertionError异常的一部分显示。
x = 5
assert x > 0, "x 必须大于 0"
注意事项
assert语句在Python的优化模式(使用-O参数运行Python时)会被忽略。
assert不应该用于替代异常处理,它主要用于开发和测试阶段,以快速失败并发现问题。
assert后面的错误信息是可选的,但提供错误信息可以帮助更快地诊断问题。
3:raise
在Python中,raise语句用于引发一个异常。当你想要在特定条件下停止程序的正常流程,并通知调用者发生了错误或异常情况时,可以使用raise语句。
基本语法
raise [exception_name[(reason)]]
#exception_name:要引发的异常名称。
#reason:可选的错误原因或描述,通常是一个字符串。
引发内置异常
x = -1
if x < 0:
raise ValueError("x 不能为负数")
引发自定义异常
class MyException(Exception):
pass
def my_function(value):
if value < 0:
raise MyException("值不能为负数")
try:
my_function(-1)
except MyException as e:
print(f"捕获到异常:{e}")
注意事项
raise语句通常用于错误处理,允许你在代码中显式地控制异常的引发。
当raise一个异常时,程序将立即停止当前代码块的执行,并寻找相应的异常处理(except块)。
如果没有找到处理异常的except块,程序将终止,并显示一个错误消息,包括异常的类型和原因。