Python的异常处理机制 ​

简介: Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。

Python异常处理机制

   Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。

一、Bub的由来及分类

1.Bug的由来

  世界上第一部万用计算机的进化版-马克2号( Mark II)
  1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“ 马克二型”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。

  突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”

  从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)。

在这里插入图片描述

2.Bug常见类型

2.1粗心导致的错误

1.漏了末尾的冒号: if 循环语句、 else 语句等
2.缩进错误
3.英文符号写为中文符号
4.把字符串 str和数字凭借在一起
5. while循环没有定义变量
6.比较运算符 == 和赋值运算符 = 混用
age = int(input('请输入年龄:'))  # input函数返回值为str类型
if age > 18:
    print('成年了')

2.2知识不熟悉导致的错误

1. index索引越界
2.列表方法 lst.append
# 索引越界
lst = [1, 2, 3, 4]
# print(lst[4])
print(lst[3])  # 4


# append()方法使用不熟练
lst = []
# lst = append(1, 2, 3)
lst.append(1)  # 每次只能添加一个元素

2.3思路不清晰导致的错误

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

# 思路不清晰导致的问题 基础知识不牢固,练练练!!!
lst = [{'rating': [9.7, 2062397], 'id': '1292052', 'type': ['犯罪', '剧情'], 'title': '肖申克的救赎', 'actors': ['蒂姆·罗宾斯', '摩根·弗里曼']},
       {'rating': [9.6, 1528760], 'id': '1291546', 'type': ['剧情', '爱情', '同性'], 'title': '霸王别姬', 'actors': ['张国荣', '张丰毅', '巩俐', '葛优']},
       {'rating': [9.5, 1559181], 'id': '1292720', 'type': ['剧情', '爱情'], 'title': '阿甘正传', 'actors': ['汤姆·汉克斯', '罗宾·怀特 ']}
       ]

name = input('请输入你要查询的演员:')
for item in lst:  # 遍历列表lst  -->{}  item是一个又一个的字典
    act_lst = item['actors']  # 通过item字典中的键actors获取值演员列表
    for actor in act_lst:  # 遍历演员列表
        if name in actor:
            print(name, '出演了', item['title'])

在这里插入图片描述

2.4被动掉坑引起的错误

除零异常

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

a = int(input('请输入第一个整数:'))
b = int(input('情书如第二个整数:'))
result = a/b  # 注意:0不可以做除数
print('输出结果为:', result)

在这里插入图片描述
解决办法

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

try:
    a = int(input('请输入第一个整数:'))
    b = int(input('请输如第二个整数:'))
    result = a / b  # 注意:0不可以做除数
    print("{}除{}等于{}".format(a, b, result))
except ZeroDivisionError as error:
    print(error)

在这里插入图片描述

二、异常处理

   Python提供了异常处理机制,可以在异常出现时即时捕获,然后内部“ 消化”,让程序继续运行

1.try-exception语句

try:
    ...  可能会出异常的代码
    ...
    ...
except xxx(异常类型):
    ...  异常处理代码
    ...
    ...
# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

try:
    a = int(input('请输入第一个整数:'))
    b = int(input('请输如第二个整数:'))
    result = a / b  # 注意:0不可以做除数
    print('输出结果为:', result)
except ZeroDivisionError:
    print('对不起,除数不能为0')
print('程序结束')

在这里插入图片描述
在这里插入图片描述

2.多个except语句

try:
    ...  可能会出异常的代码
    ...
    ...
except Exception1:
    ...  异常处理代码
    ...
    ...
except Exception2:
    ...  异常处理代码
    ...
    ...
except BaseException:
    ...  异常处理代码
    ...
    ...
# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

try:
    a = int(input('请输入第一个整数:'))
    b = int(input('请输如第二个整数:'))
    result = a / b  # 注意:0不可以做除数
    print('输出结果为:', result)
except ZeroDivisionError:
    print('对不起,除数不能为0')
except ValueError:
    print('对不起,只能输入数字串')
print('程序结束')

正常输出:
在这里插入图片描述
除零异常:ZeroDivisionError
在这里插入图片描述
值错误:ValueError
在这里插入图片描述

3.try-except-else结构

如果 try中没有抛出异常,则执行 else块;如果 try中抛异常,则执行 except块, else块不执行。
# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

# 如果 try中没有抛出异常,则执行else块,如果try中抛异常,则执行except块
try:
    a = int(input('请输入第一个整数:'))
    b = int(input('情书如第二个整数:'))
    result = a / b  # 注意:0不可以做除数
except BaseException as e:
    print('出错了', e)
else:
    print('计算结果为', result)

在这里插入图片描述

4.try-except-else-finally结构

finally 无论是否发生异常都会被执行,常用来解释 try块中申请的资源
# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

'''
try except else finally 结构
finally 无论是否发生异常都会被执行,能常用来解释try块中申请的资源
'''

try:
    a = int(input('请输入第一个整数:'))
    b = int(input('请输入第二个整数:'))
    result = a / b
except BaseException as e:
    print('出错了', e)
else:
    print('结果为:', result)
finally:
    print('谢谢你的使用')
print('程序结束')

在这里插入图片描述

5.traceback模块

使用 traceback模块打印异常信息
# -*- coding: utf-8 -*-
# @File  : 8.trackback模块.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 16:01


import traceback

try:
    print(520)
    print(1 / 0)
except:
    traceback.print_exc()

在这里插入图片描述

三、Python常见异常类型

异常 描述
ZeroDivisionError 除零异常
IndexError 列表中没有次索引(index) 注:索引从零开始
KeyError 映射中没有这个键 dic['key']
NaneError 未声明/初始化对象 (没有属性)
SyntaxError Python语法错误
ValueError 传入无效参数

四、PyCharm程序调试

先看一段代码:

# -*- coding: utf-8 -*-
# @File  : PyCharm程序的调试.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 16:46


i = 1
while i < 2:
    print(i)

在这里插入图片描述

1.断点

程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步的判断。

在这里插入图片描述

2.调试

进入调试视图的三种方式:

(1)单击工具栏上的按钮
在这里插入图片描述

(2)右键单击编辑区:点击:debug’模块名’
在这里插入图片描述

(3)快捷键:shift+F9

相关文章
|
6月前
|
Python
解释 Python 中的异常处理机制。
解释 Python 中的异常处理机制。
56 0
|
6月前
|
Python
Python 中的异常处理机制是一种强大的错误处理工具
【5月更文挑战第8天】Python的异常处理机制借助try/except结构管理错误,提高程序健壮性。异常是中断正常流程的问题,可由多种原因引发。基本结构包括try块(执行可能出错的代码)和except块(处理异常)。通过多个except块可捕获不同类型的异常,finally块确保无论是否异常都执行的代码。此外,raise语句用于主动抛出异常,自定义异常通过继承Exception类实现。with语句配合上下文管理器简化资源管理并确保异常情况下资源正确释放。
49 2
|
6月前
|
Python
探索Python中的异常处理机制
异常处理是Python编程中至关重要的一环。本文将深入探讨Python中的异常处理机制,包括异常的基本概念、常见的内置异常类型以及如何使用try-except语句来捕获和处理异常。通过详细的示例和解释,读者将对Python中的异常处理有一个全面的了解,并能够编写更加健壮和可靠的代码。
|
6月前
|
Python
Python中的try-except异常处理机制
Python中的try-except异常处理机制
84 0
|
6月前
|
Python
python学习11-异常处理机制
python学习11-异常处理机制
|
6月前
|
数据库连接 数据库 Python
了解Python的异常处理机制及其应用场景
了解Python的异常处理机制及其应用场景
98 1
|
JSON 前端开发 数据安全/隐私保护
Python 异常处理机制
Python 异常处理机制
|
Java 索引 Python
Python总结,异常处理机制
Python总结,异常处理机制
151 0
Python总结,异常处理机制
|
人工智能 Java 索引
Python 异常处理机制
Python入门基础异常处理机制。try-except,异常类型,raise 抛出异常,自定义异常。
88 0
Python 异常处理机制
|
数据采集 Python
Python网络爬虫之HTTP的异常处理机制
一、URLError(URL错误异常) 通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生。这种情况下,异常同样会带有"reason"属性,它是一个tuple(可以理解为不可变的数组),包含了一个错误号和一个错误信息。
1453 0
下一篇
无影云桌面