Python异常基础(一)
2021/9/28 11:11:00
本文主要是介绍Python异常基础(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录(PS:觉得不错请点赞收藏支持一下)
- 一、异常基础
- 1.1 错误
- 1.2 处理异常
- 二、捕获异常
- 2.1 内置异常类型
- 2.2 捕获指定异常
- 2.3 捕获多个指定异常
- 2.4 捕获所有异常
- 2.5 捕获异常描述信息
- 2.6 异常的 else方法 和 finally 方法
- 三、异常嵌套
- 四、自定义异常
一、异常基础
1.1 错误
在敲写代码过程中,相信很多人都碰过壁,因为总是要出错的嘛,出现错误不要急躁,一步一步去调试,当你解决了这个问题,你会发现快乐加倍。
- 错误分为两种
- 语法错误
- 异常
- 语法错误
while True print('hello') # 报错信息: SyntaxError: invalid syntax !!意思是无效语法!!
不过现在的编辑器做的都很好,语法错误都会给出提示,能更好的避免这些问题。
- 异常
- 概述:代码编写阶段没有问题,代码运行阶段出现了错误,Python 解释器会抛出异常错误信息。
- 举例:
res = open('aa.txt','r') print(res.read()) # 报错信息: FileNotFoundError: [Errno 2] No such file or directory: 'aa.txt' 什么意思呢? 大概意思就是当前目录没有此文件
1.2 处理异常
想一想,我们应该需要做什么呢?
如果想对异常进行处理,需要: 1. 让异常信息不要显示在页面上 2. 能够获取异常信息,然后针对性的进行处理,如写入日志文件等
那我们该如何操作呢?别急,Python 编程语言呢有内置的方法,我来教你
如何获取异常信息? 使用 try...except 组合进行处理 1. 将可能发生异常的代码放到 try 中 2. 使用 except 捕获异常: 意思就是 try 中的代码一旦出错,就自动跳转到 except 中; 如果 try 中的代码没有发生错误,则不执行 except 中的代码 # 语法 try: 代码 except 异常类型: 代码
方法告诉你了,让我们来动手写一写
try: res = open('aa.txt', 'r') except: print('出错了') # 运行结果: 出错了 是不是控制台没有出现红色的信息,感觉很舒适了一些~
二、捕获异常
2.1 内置异常类型
不给大家一个一个举例子了,直接看图,这些是我总结的一些比较常见的异常类型,眼熟它即可,因为时间很长,你要与它陪伴很久很久~
ZeroDivisionError 除零错误 TypeError 类型错误 AttributeError 属性错误 NameError 变量名错误 SyntaxError 语法错误 KeyError 字典键名错误 IndexError 索引错误 IndentationError 缩进错误 TabError 空格和Tab混用 OSError 系统错误 ValueError 传入无效的参数
2.2 捕获指定异常
慢下来,思考一下,Python 开发者为什么要内置异常类型呢?
# 为什么要内置异常类型 如果仅仅使用 try...except 虽然可以捕获异常,但是无法知道具体的异常信息,非常不利于后面处理错误,在 except 后面加上异常类型,就可以捕获到指定的异常信息
举一个变量类型异常的例子吧
try: print(number) except NameError: print('没有定义变量') # 运行结果: 没有定义变量 咱们这里只是举个简单的例子方便大家理解,在编辑器敲写时,number 变量就已经标注红色了
2.3 捕获多个指定异常
虽然捕获了指定的异常,但是却无法捕获其他的异常,怎么办? Python 开发者前辈早已开发好了方法供我们使用
try: print(number) except (ZeroDivisionError,FileNotFoundError,NameError): print('发生错误') # 运行结果: 发生错误
2.4 捕获所有异常
看到标题是不是在想,wcnb,多么的人性化,学了之后是真的快乐加倍
try: print(number) except Exception: print('发生了错误') # 运行结果: 发生了错误
2.5 捕获异常描述信息
上述案例,无论是哪种错误,最后输出的结果都是自己先写好的,那可不可以获取不同异常的错误信息呢? 答案是可以的,Python 【yyds】
1. 语法
# try: 代码 except 异常类型 as xx: 代码
2. 举例
# 例1 try: print(number) # as 声明后面的变量名,变量名可以随意命名,意思就是将 Exception 捕获的异常错误信息赋值给了 result, 然后 print 输出就可以了 except Exception as result: print(result) # 运行结果: name 'number' is not defined # 例2 try: print(10 / 0) except Exception as result: print(result) # 运行结果: division by zero
2.6 异常的 else方法 和 finally 方法
相信 else 方法大家都不陌生,条件判断语句 if esle 写了太多次了,几乎离不开它,那它的作用在异常里面又是怎样的呢?
1. 结构
try: 可能发生错误的代码 except: 如果出现异常执行的代码 else: 没有出现异常要执行的代码 finally: 无论是否出现异常都要执行的代码
2. 举例
try: print('hello') except Exception as result: print(result) else: print('代码正常执行') finally: print('我每次都要执行')
三、异常嵌套
嵌套这个词,几乎前面每次讲一个知识,都会有嵌套,比如: if嵌套语句,for 循环嵌套语句,while循环嵌套语句,列表嵌套,字典嵌套…等等,异常也如它们一样。
# 例1 """ 首先让用户输入年龄,正常的话则继续让用户输入身高,不正常则捕获异常,这个举例有些勉强,为了简单的向大家介绍 异常嵌套,就先这样吧,往后当你工作时,你会常用到的。 """ try: age = int(input('输入年龄:')) try: height = int(input('输入身高(cm):')) except: print('身高输入有误') else: print(f'年龄:{age},身高:{height}') except: print('年龄必须是数字')
四、自定义异常
如何使用?
- 创建自定义异常类,继承 Exception
- 重写
__str__
方法,返回错误描述信息 - 使用 raise 抛出自定义异常
1. 语法
raise 异常类对象
2. 举例
class ShorInputError(Exception): def __str__(self): # 返回 如果密码长度 < 3 时要向用户展示错误信息 return f'密码长度不能小于3' try: password = input('输入密码:') if len(password) < 3: """ raise 后面跟一个异常类型的实例,用于抛出此类型的异常,好让 except 捕获异常 也就是说,将代码的控制权移交给 except """ raise ShorInputError() except Exception as result: # result 就是自定义异常类中 str 方法返回的错误信息 print(result)
这篇关于Python异常基础(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型