首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python - 异常捕获

python - 异常捕获

作者头像
HammerZe
发布于 2022-03-25 20:00:25
发布于 2022-03-25 20:00:25
2.8K0
举报
文章被收录于专栏:Hammer随笔Hammer随笔

异常捕获

在执行python程序时,有时候会报异常,出错的原因可能是自己错写或少写,还有可能是执行程序时由于疏忽或者考虑不全造成了错误,Traceback可以追踪错误点,进行分析改正;这时我们可以对异常进行捕获处理,防止程序终止。

异常类型

  • 语法错误
    • 千万不能犯的!eg:if后没跟内容,for循环没写冒号等
  • 逻辑错误
    • 少量允许的!写完程序建议自己先测试一下~
    • 修改逻辑错误的过程其实就是在从头到尾理清思路的过程

异常的组成

  1. traceback 翻到最下面从下往上的第一个蓝色字体鼠标左键点击即可跳转到错误的代码所在的行
  2. XXXError 错误的类型
  3. 错误类型冒号后面的内容 错误的详细原因(很重要 仔细看完之后可能就会找到解决的方法)

异常捕获原则:

异常捕获句式和万能异常:

  1. 有可能会出现错误的代码才需要被监测
  2. 被监测的代码一定要越少越好
  3. 异常捕获使用频率越低越好

关键字:

关键字

描述

try/except

普通异常捕获,可多层嵌套

as

返回错误详细信息,eg:except 错误类型 as e

else

被监测代码不报错的时候执行

finally

无论是否报错都执行flnally后内容

assert/isinstance

断言,用于判断类型

raise

主动报错,eg:raise+错误类型

try+except Exception

万能异常模板

错误示例:

代码语言:javascript
复制
# 1、语法错误
if 1>2
for i in rage(10)
'''类似这种没有加冒号,缺胳膊断腿的操作属于语法错误'''
SyntaxError: invalid syntax

try /except示例:

代码语言:javascript
复制
# 普通异常捕获
try:
    int('abc')
except NameError as e:
    print('变量名name不存在',e)
except ValueError as e:
    print('不是纯数字',e)
    
# 结果
不是纯数字 invalid literal for int() with base 10: 'abc'
    
'''try下放易错的代码,except后跟错误类型,as e为详细错误内容可以打印,这个结构可以嵌套多次,类似if-elif-else'''

try+except Exception示例:

代码语言:javascript
复制
'''
try:
	可能出错的代码
except Exception:
	捕获错误后输出的内容
'''
l1 = [1,2,3,4,5,6,7,8,9,11,22,33,44,55]
res = l1.__iter__()
while True:
    try:
        print(res.__next__())
    except Exception:
        print('for循环结束,自动结束,不然会报错')
        break
# 结果太长了,需要的自己执行一下叭~

try/except/else/finally示例:

代码语言:javascript
复制
# else/finally示例
# 不出错的情况
try:
    print('没有异常!')
except Exception:
    print('没错不用走这呀')
else:
    print('没错才走else下面的内容')
finally:
    print('有错没有错都得走finally下的内容!!')

# 结果
'''
没有异常!
没错才走else下面的内容
有错没有错都得走finally下的内容!!
'''

# 有错的时候
try:
    l = []
    l[100]
    print('有异常!')
except Exception:
    print('有错,来了老弟')
else:
    print('没错才走else下面的内容')
finally:
    print('有错没有错都得走finally下的内容!!')

# 结果
'''
有错,来了老弟
有错没有错都得走finally下的内容!!
'''

assert/isinstance示例:

代码语言:javascript
复制
# assert/isinstance示例:
# 正确的情况
name = 'HammerZe'
assert isinstance(name,int)
# 错误的情况
name = 'HammerZe'
assert isinstance(name,int)
# 结果:AssertionError

'''判断类型'''

raise示例:

代码语言:javascript
复制
# raise 示例
raise NameError
# 结果:NameError
'''主动报错'''

通过异常捕获可以更快的明白如何异常处理,

祝各位在修改bug的路上一路走到黑!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 异常捕获
    • 异常类型
    • 异常的组成
    • 异常捕获原则:
    • 关键字:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档