首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文搞懂Python异常错误

一文搞懂Python异常错误

作者头像
数据山谷
发布2020-12-08 11:23:30
发布2020-12-08 11:23:30
1K00
代码可运行
举报
文章被收录于专栏:数据山谷数据山谷
运行总次数:0
代码可运行
冬天扮美,就是在寒冷的天气里,挺直腰板;编程耍酷,就是在红色的海洋中,一往无前。

为什么我要写这篇呢,之前有很多小伙伴在运行代码时遇到了各种各样的问题,甚至有这样的一句话,编程一小时,找错一整天,所以小卡今天就整理了一下日常常见的几种报错类型,come~

首先我们来说一下错误和异常,在程序中难免会出现各种错误,而错误分为两种,第一种是语法错误,这种错误你是无论如何都跑不出来的,看着终端红颜色的一片脑壳都有点痛,所以说这种错误执行程序前要修正;第二种呢就是逻辑错误,比如说用户输入的不合适等一系列错误。

什么是异常呢,异常就是程序运行时,某一句引发错误导致之后的代码都无法运行,是不是有点丛林大盗的感觉,此山是我开,此树是我栽,哎呀呀~

在Python无法正常处理程序时就会发生一个异常。这里的异常Python对象,表示这段代码是这个问题。 常见的异常类型:

代码语言:javascript
代码运行次数:0
运行
复制

SyntaxError: unexpected EOF while parsing

语句错误,多了无法解析的符号,检查一下是否多了或者少了括号

SyntaxError: invalid character in identifier

语法错误有无效标识符,检查一下中文符号

IndexError: list index out of range

索引错误,超出索引范围,检查一下列表  是否为空

TypeError: must be str, not int

数据类型错误,该数据不是正确的数据类型,比如字符串和数字直接拼接,检查一下数据类型

IndentationError:expected an indented block

缩进错误,检查一下代码的缩进是否正确

KeyError: 'fond'

键错误,字典中没有该key对应的值,检查一下键名或者字典数据是否正确

ValueError:substring not found

值错误,输入的数据类型跟要求的不符合

NameError:name 'a' is not defined

未初始化对象,变量没有被定义

AttributeError:'tuple' object has no attribute 'remove'

属性错误,该对象没有这个属性、方法,请检查一下数据类型,例如元组没有append属性

SystemExit

解释器请求退出,出现在exit()函数后

IOError

输入/输出操作失败

ImportEroor

导入模块/对象失败,检查一下模块是否能够正常使用

UnicodeDecodeError/UnicodeEncodeError/UnicodeTranslateError

Unicode 解码/编码/转码时的错误

TabError

Tab和空格混用

以上就是比较常见的几种异常类型,有异常同样也会有处理的方法,那么我们首先来说什么是异常处理。

Python在执行程序时,检测到错误,触发异常,在异常触发后且没有处理的情况下,程序会立即在当前异常处停止,后面的代码就不会运行,那么我们的程序就会直接崩溃,弱不禁风,所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性。

友情提示:每一个try,都必须至少对应一个except。 异常是程序错误引起的,和语法错误没有关系哦,语法错误一定要及时修正!!! 此外,与python异常相关的关键字主要有:

关键字

关键字说明

try/except

捕获异常并处理

pass

忽略异常

else

如果try的语句没有引发异常,则执行else的语句

as

定义异常实例

finally

无论是否出现异常,都会执行其语句

raise

抛出/引发异常

异常处理的语句

看一下如何使用:

try...except

代码语言:javascript
代码运行次数:0
运行
复制
try:
    print(name)
except NameError:
  print('如果在try部分引发了名为'name'的异常,则执行这段代码')

try...except...as...

代码语言:javascript
代码运行次数:0
运行
复制
try:
    print(name)
except NameError as e:
    print(e)

try...except...else

代码语言:javascript
代码运行次数:0
运行
复制
try:
#     name = 'lucy'
    print(name)
except NameError as e:
    print(e)
else:
    print('如果没有异常发生,则执行这段代码')

try...except...finally

代码语言:javascript
代码运行次数:0
运行
复制
try:
    name = 'lucy'
    print(name)
except NameError as e:
    print(e)
finally:
    print('finally 块无论是否发生异常都会被执行;通常用来释放 try 块中申请的资源')

raise异常 如果你捕获了一个异常,却不想彻底解决这个异常,而是将该异常向上层抛出,可以使用raise关键字 raise用于抛出异常,其后可以跟一个异常对象,或者什么也不跟,如下:

代码语言:javascript
代码运行次数:0
运行
复制
raise 加一个异常对象:
  
raise Exception('这里有错误')
代码语言:javascript
代码运行次数:0
运行
复制
raise 什么也不加:

try:
    hey('123', 'abc')
except Exception as e:
    print('发生异常')
    raise

以上方法应该尽量少用,因为它本身是你附加给程序的异常处理逻辑,有大量的这种处理时,你的代码可读性会很差,只有在异常无法预知的情况下在使用,其他的异常还是应该尽快修正。

说到这里,你们是否对异常和错误有了点头绪呢。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据山谷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档