捕获所有异常
python
try:
print(1 / 0)
print(undefinedVariable)
except:
print("error")
# 或者
try:
print(1 / 0)
print(undefinedVariable)
except Exception as e:
print("出错了", e)
捕获指定异常
python
try:
print(undefinedVariable)
except NameError as e:
# 可以捕获到错误
print("变量未定义:", e)
try:
print(1 / 0)
except NameError:
# 无法捕获到错误, 导致程序出错
print("无法捕获到除以 0 的错误")
# 如果想要捕获多种异常, 可以这样
# 注意, 只会捕获第一个出错的异常,
# 因为只要报异常了那么就走 except
# 中代码了, try 中后续的代码不会继续执行了
try:
print(1 / 0)
print(undefinedVariable)
except (NameError,ZeroDivisionError) as e:
print("出错了", e)
else 和 finally
else
太鸡肋了, 直接写到 try 后面就行了, 但是 finally 非常有用
python
try:
print(1 / 0)
print("没有出错,我会执行,出错了,我就不执行1")
except Exception as e:
print("出错了:", e)
else:
print("没有出错,我会执行,出错了,我就不执行2")
finally:
print("不管是否出错我都会执行")
自定义异常 & 手动抛出异常
python
# 自定义异常, 继承 Exception 但是什么也不做
class CustomError(Exception):
pass
try:
raise CustomError("some error message")
except CustomError as e:
print("捕获到手动抛出异常:", e)