Python的异常捕获

一、为什么要捕获异常
在可能发生异常的地方进行捕获,当异常出现时提供解决方式,避免任由异常导致程序无法运行。

二、捕获异常的语法

  1. try:后面跟可能要发生异常的语句。
  2. except [异常 as 别名:]:出现异常时的准备手段。
  3. [else:]:未出现异常时应做的事情。
  4. [finally:]:不管出不出现异常都会做的事情。
注意:try,except是必选要素,else,finally是可选要素
 异常捕获基础语法实例:
try:
    # 可能引发异常的代码
    result = 100 / 0
except ZeroDivisionError as e:    #ZeroDivisionError指定异常
    print(f"发生了内置异常:{e}")  #发生了内置异常:division by zero
异常捕获增加else,finally语法的例子:
try:
    # 可能引发异常的语句
    num = int(input("请输入一个整数:"))
    result = 10 / num
except ValueError as ve:
    # 处理值错误异常
    print(f"输入不是整数:{ve}")
except ZeroDivisionError as zde:
    # 处理除零异常
    print(f"不能除以零:{zde}")
else:
    # 没有异常时执行的语句
    print(f"结果是:{result}")
finally:
    # 无论是否有异常都会执行的语句
    print("程序执行完毕。")

三、如何捕获所有异常
当我们不确定有何种异常,有两种方式捕获全部异常的方法:

  1. except:                         #含系统内置错误和用户自定义错误 except Exception:。
  2. except Exception:  #仅系统内置错误,定位更精准更常用
try:
    # 可能引发异常的代码
    result = 100 / 0
except Exception as e:            #Exception适用所有系统内置异常
    print(f"发生了内置异常:{e}")  #发生了内置异常:division by zero

四、异常的传递性概念

异常具有传递性。当某个函数中发生异常并且没有被该函数捕获处理时,异常会传递给调用它的函数。如果调用它的函数也没有捕获处理这个异常,那么异常会继续向上传递,直到被某个函数捕获处理或者如果所有函数都没有捕获异常,程序就会报错。

示例代码
def func01():
    raise ValueError("在 func01 中发生的异常")

def func02():
    func01()

def main():
    try:
        func02()
    except ValueError as e:
        print(f"在 main 函数中捕获到异常:{e}")

if __name__ == "__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值