行者孙Python

御险篇-Day51 异常信息获取:as e 查看错误详情

📖 知识点

语法:except 异常类型 as e

 

try:
    # 风险代码
except 异常类型 as e:
    # e 就是异常对象,print(e) 可以拿到异常描述文本

 

  • as 是关键字,e 是变量名(你也可以写 err、msg,习惯简写 e)

  • 作用:把捕获到的异常实例赋值给变量,读取里面自带的错误信息

  • 可以搭配多 except 分支,不同异常单独获取信息

基础示例

try:
    num = int("hello")
except ValueError as e:
    print("捕获到异常,详情:", e)

 

输出:

捕获到异常,详情: invalid literal for int() with base 10: 'hello'

 

多异常搭配 as e:

 

lst = [1,2,3]
try:
    print(lst[9])
except IndexError as e:
    print("索引异常详情:", e)

 

💡 重点:raise 手动抛出异常写的提示文字,也可以通过 as e 获取!

 

try:
    raise ValueError("分数超出0~100范围")
except ValueError as e:
    print(e) # 直接拿到我们自定义的提示

 

⚔️ Kata 实战任务

任务需求:

  1. 字典 product = {"name":"键盘", "price":79}

  2. try 中接收用户输入 key,读取字典 value,并转为整数

  3. 两个 except 分支,都使用as e捕获异常信息

    • KeyError:打印找不到键,异常详情:{e}

    • ValueError:打印转换失败,异常详情:{e}

  4. 测试输入:name 和 stock

参考代码

 

product = {"name":"键盘", "price":79}
try:
    key = input("请输入查询的key:")
    val = product[key]
    num = int(val)
    print(f"转换成功,数字={num}")
except KeyError as e:
    print(f"找不到键,异常详情:{e}")
except ValueError as e:
    print(f"转换失败,异常详情:{e}")

 

测试示例 1:输入name

 

请输入查询的key:name
转换失败,异常详情: invalid literal for int() with base 10: '键盘'

 

测试示例 2:输入stock

 

请输入查询的key:stock
找不到键,异常详情: 'stock'

🧠 思考题

  1. except ValueError as err:,变量名写成 err 可以吗?变量名有强制规定吗?

  2. 在生产程序中,拿到 e 之后除了 print,还有什么用途?

‹ 返回目录
🏠首页 Python 📦资源 👤关于我