异常捕获

什么是异常

  代码运行出错会导致异常,异常发生后如果没有解决方案则会导致整个程序结束

异常三个重要组成部分

  1、traceback

    翻到最下面从下往上的第一个蓝色字体鼠标左键点击即可跳转到错误代码所在的行

  2、xxxError

    错误的类型 

复制代码
# 1、
print(idna)  # NameError
# 2、
l = [11,22,33]
print(l[100])  # IndexError
# 3、
d = {'username':'jason'}
print(d['xxx'])  # KeyError
# 4、
int('abc')  # ValueError
复制代码

  3、错误类型冒号后面的内容

    错误的详细原因(很重要,仔细看完之后可能会找到解决方法)

错误的语法

  1、语法错误

    不被允许出现,出现了立马修改

  2、逻辑错误

    可以被允许,出现之后尽快修改即可

    修改逻辑错误的过程其实就是在从头到尾理清思路的过程

异常捕获句式try的使用

  1、基本语法格式

    try:
        有可能会出错的代码
    except 错误类型 as e:
        出错之后对应的处理机制(e是错误的详细信息)
    except 错误类型 as e:
        出错之后对应的处理机制(e是错误的详细信息)
    except 错误类型 as e:
        出错之后对应的处理机制(e是错误的详细信息)
try:
    int('abc')
except NameError as e:
    print('变量名name不存在',e)
except ValueError:
    print('值不是纯数字')
# 这样就不会报错

万能异常

  格式:

try:
    int('abc')
    print(name)
    l = [11]
    l[100]
except Exception:
    print('你来啥都行 无所谓')

异常捕获句式和万能异常使用

  1、有可能会出现错误的代码才需要被监测

  2、被监测的代码一定要越少越好

  3、异常捕获使用频率越低越好

异常捕获的一些补充

    else、finally、assert、raise

复制代码
try:
    l = []
    l [100]
except NameError as e:
    print('名字错误')
except KeyError as e:
    print('键错误')
except IndexError as e:
    print('索引错误')
else:
    print('当被监测的代码没有报错 正常运行结束之后会走')
finally:
    print('无论被监测的代码是否报错 最终都需要走一下这里的子代码')
# 断言
name = 'jason'
assert isinstance(name,str)
# 主动报错
# raise+c指定的错误类型
raise NameError
复制代码

 

 

 

posted @   那就凑个整吧  阅读(73)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示