异常:由于代码的逻辑或者语法错误导致的程序中断。

在学习Python的过程当中,大家一定要区分清楚异常和布尔值False

布尔值的False只是一个值,通常代表的是一个条件的不成立,常用于逻辑判断

比如:

1 num = 2

2 print(num > 3)3 if num > 3:4 print("num > 3")

异常指的是由于代码的逻辑或者语法错误导致的程序中断

比如:

1 num = 2

2 2+"2"

了解了上面的逻辑之后,我们来看看大家在代码当中经常出现的几种错误,和常见原因

错误类型

错误名称

错误解释

SyntaxError

语法错误

是语法导致的错误,通常的报错是 invalid syntax,比如:缩进语句块不加冒号,遇到这种错误,就要详细的检查自己的的语句了

IndexError

索引错误

是索引引用导致的错误,通常的报错是 list out of range,遇到这个错误就要认真的检查自己是不是取了一个超出序列长度的索引

NameError

命名错误

是变量命名导致的错误,通常的报错是 no model named ... ,遇到这个错误就要查看自己的变量了,初学者要注意是不是字符串没有加引号

AttributeError

属性错误

是调用对象属性时候导致的错误,通常报错是 ... object has no attribute ... 遇到这个错误就要查看自己的对象是不是调用了不存在的属性了

KeyError

键错误

是字典取值时候导致的错误,字典没有这个键

TypeError

类型错误

是对对象进行非本类型操作时候导致的,没有固定的报错,常见的有 ... not callabel ,遇到这种错误,要认真梳理自己对对象的操作了,比如,非函数对象加括号调用

当然异常的类型还有好多,在这就不一一列举了,我们来看捕获异常的关键字

捕获异常最简单的写法如下

try: #尝试执行缩进下面的报错

1+"1"

except: #如果发生错误,打印Error

print("Error")>>> Error

这里我们尝试执行 1+“1”,如果可以执行就执行,如果发生错误就执行下面的代码。

但是,在工作当中,这样的代码并没有太好的效果,我们通过这段代码既无法实现错误内容的输出,也不能实现错误的处理,只是让程序不报错的执行了下去,这个显然不好使。

所以我们首先要考虑的就是如何获取具体的错误内容,例子如下:

例1:

try:1+"1"

exceptException as e:print(e)>>> unsupported operand type(s) for +: 'int' and 'str'

这里我们用到了两个之前没有用到过的关键词:

1、Exception 所有的错误

2、as 别名

所以例1代码的含义就是尝试执行 1+"1”,如果只成功就可以,否则无论发生任何错误,都把这个错误返回的内容起别名为e,在下面输出出来。在这里要注意的一点就是,e可以被打印但是不是字符串对象,所以不可以进行任何字符串操作。

try:1+"1"

exceptException as e:print(type(e))>>>

例2:

try:1+"1"

exceptTypeError as e:print(e)>>> unsupported operand type(s) for +: 'int' and 'str'

这里和上面的例1唯一的不同就在于except后面跟了具体的错误类型,意思很明确,当发生TypeError的时候,我进行如下处理,至于其他错误,就让他报错去吧。

当然这样的说法有点随性,认真的查看,着多种错误类型的捕获异常给我们对同一语句进行不同的异常处理带来了很大的遍历性,毕竟不是所有的错误都可以pass!

了解了上面的报错,那么接下来要认真研究的就是捕获异常的另外两个关键字:else 和finally

首先是他两的逻辑

else:代表在try执行成功之后,进行执行,放在except的后面

finally:代表最后,无论执行try成功还是失败,都会执行。作为最后的收尾

了解之后,我们来查看我们例子

例1:

1 try:2 1+"1"

3 exceptException as e:4 print(e)5 else:6 print("it is ok")7 finally:8 print("ok it's over")9

10 >>> unsupported operand type(s) for +: 'int' and 'str'

11 >>> ok it's over

例2:

1 try:2 1+1

3 exceptException as e:4 print(e)5 else:6 print("it is ok")7 finally:8 print("ok it's over")9

10 >>> it isok11 >>> ok it's over

在例1当中,我们执行try失败,所以except和finally执行,在例子2当中,我们执行try成功,所以else和finally成功。

else和finally的出现极大的方便了我们对捕获异常和异常处理的完整流程描述,不如下面的例子

1 importpymysql2 try:3 #尝试连接数据库

4 connect =pymysql.connect(5 host = "localhost",6 user = "root",7 password = "123",8 database = "outTest"

9 )10 exceptException as e:11 #失败输出错误

12 print(e)13 else:14 #如果成功进行数据查询

15 cursor =connect.cursor()16 cursor.execute("select * from login")17 all_data =cursor.fetchall()18 print(all_data)19 finally:20 #不论如何进行结束通知

21 print("执行结束")

到这里,可能好多读者觉得捕获异常到此结束,其实并不是这样,还可以有一个好的建议给到大家,我们可以尝试使用。先看下面的两个案例:

例1:

try:1+"1"

exceptException as e:print(e)>>> unsupported operand type(s) for +: 'int' and 'str'

例2:

try:1+"1"

exceptException as e:

error=traceback.format_exc()print(error)>>>Traceback (most recent call last):

File"C:/Users/bian/Desktop/TestProject/twistedProject/twistedProject.py", line 67, in

1+"1"TypeError: unsupported operand type(s)for +: 'int' and 'str'

例1和例2同样实现了捕获异常的功能,但是例子2的返回更加的专业,并且利于调试

python异常捕获_python 捕获异常相关推荐

  1. python异常捕获_Python 异常的捕获、异常的传递与主动抛出异常操作示例

    本文实例讲述了Python 异常的捕获.异常的传递与主动抛出异常操作.分享给大家供大家参考,具体如下: 异常的捕获 demo.py(异常的捕获): try: # 提示用户输入一个整数 num = in ...

  2. 仅需6道题轻松掌握Python异常捕获 | Python技能树征题

    仅需6道题轻松掌握Python异常捕获 | Python技能树征题 0. 前言 1. 第 1 题:在单元测试中测试异常 2. 第 2 题:多个异常的处理 3. 第 3 题:捕获所有异常 4. 第 4 ...

  3. Python 异常捕获打印堆栈信息

    Python 异常捕获打印堆栈信息 对于之前只接触过Java没有接触过Python的工程师而言,或多或少会有一些语法上的困惑.本文仅限小白 异常捕获语法: try:正常代码块........ exce ...

  4. Python异常捕获及自定义异常类

    Python异常捕获及自定义异常类 一.什么是异常? 异常是一个与业务逻辑无关的BUG,一个潜在错误或者网络错误事件等,如:尚未实现的函数,缩进错误,Python语法错误等.该事件可能会在程序执行过程 ...

  5. python异常捕获

    python异常捕获 文章目录 python异常捕获 ①捕捉一个异常 ②捕捉多个异常 ③Exception捕捉所有异常 ④raise主动触发异常 ④ try...except...else...fin ...

  6. python异常数据处理_Python 异常处理和捕获信息教程

    在学习了Python的基础数据类型和它们的相关操作方法之后,要学习的另外一个重点知识是 Python异常. 我们经常在编写程序和调试代码的过程中,有发生一些错误,为了处理和提醒用户这些错误,Pytho ...

  7. Python异常捕获和抛出-对方不想和你说话并向你抛出了一个异常

    文章目录 异常信息 捕获异常 多重异常处理 抛出异常 内置异常类型 自定义异常类型 异常信息 Python使用异常类来管理异常信息.当发生异常的时候,程序会抛出一个异常信息,自动根据代码的层次查找异常 ...

  8. Python 异常捕获

    python 的异常捕获通常用 try-except-结构 把可能发生错误的语句放在 try 模块里,用 except 来处理异常,会让系统不会直接报错,而是给你具体另一种选项吧. 举个例子 首先将t ...

  9. python自定义异常捕获_python怎么自定义捕获错误

    异常捕捉: try: XXXXX1 raise Exception("xxxxx2") except (Exception1,Exception2,--): xxxx3 else: ...

最新文章

  1. 工业相机丢帧现象怎么解决?
  2. python快速编程入门教程-python从入门到精通之30天快速学python视频教程
  3. myeclipse 9.0安装 vss1.6.2不显示问题
  4. SpringBoot登录登出切面开发
  5. mysql更新多条数据6_mysql语句:批量更新多条记录的不同值
  6. WebScoket 规范 + WebSocket 协议
  7. django-数据库的操作-原始版本-表格的查询
  8. org/hibernate/validator/internal/engine
  9. 结合Android源码分析总结单例模式的几种实现方式
  10. 数据库:SQL数据查询(详细、全面)
  11. linux中hdfs格式化,HDFS操作命令
  12. 8.使用xshell上传文件
  13. 【云原生-K8s】cka认证2022年12月最新考题及指南
  14. 黑苹果2k显示器开启hidpi_关于黑苹果固态硬盘4K对齐和Trim的开启
  15. 安装MySQL过程中,出现“Staring the server”错误的解决方法
  16. 阿里云的各种产品都是用来干什么的?
  17. 谷歌浏览器获取摄像头
  18. 企业微信2020年翻倍增长背后:更新27个版本、迭代1000多次
  19. 多元复合函数的求导法则
  20. 了解如何使用 Mac 或 PC 同步音乐、影片(新系统不用iTunes)

热门文章

  1. Linux 脚本、 正则表达式 等
  2. 缓存服务器在Linux下的运用
  3. Android应用开发——service连接泄露异常:android.app.ServiceConnectionLeaked: that was originally bound here
  4. 学成在线--10.页面预览
  5. matlab中欧姆如何表示,在excel中欧姆符号怎么打
  6. 单列表_使用Excel中的quot;记录单quot;功能快速录入数据
  7. jupyter notebook代码导出_Jupyter Notebook导出包含中文的pdf_亲测有效
  8. lamp和php,[LAMP]Apache和PHP的结合
  9. django后台多页面分页逻辑python代码
  10. Linux中的 硬链接ln和软连接ln -s