Skip to content

捕获所有异常

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)

Released under the MIT License.