当前位置:网站首页>try...except异常处理语句(6)
try...except异常处理语句(6)
2022-07-28 14:33:00 【WHJ226】
目录
在程序运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”。
1. 异常
| 异常 | 描述 |
| SyntaxError:invalid syntax | 无效语法 |
| NameError | 尝试访问一个没有声明的变量引发的错误 |
| IndexError | 索引超出序列范围引发错误 |
| IndentationError | 缩进错误 |
| ValueError | 传入的值错误 |
| KeyError | 请求一个不存在的字典关键字引发错误 |
| IOError | 输入输出错误 |
| ImportError | 当import语句无法找到模块引发的错误 |
| AttributeError | 当尝试访问未知的对象属性时引发的错误 |
| TypeError | 类型不合适引发的错误 |
| MemoryError | 内存不足 |
| ZeroDivisionError | 当除数为0时引发的错误 |
2. 异常处理
2.1 try...except
在使用时,把可能产生异常的代码放在try语句块中,把处理结果放在except语句块中,这样,一旦try语句块中的代码出现错误,就会执行except语句块中的代码;但如果try语句块中的代码没有错误,将不执行except语句块中的代码。
语法格式如下:
try:
block1
except[ExceptionName[as alias]]:
block2
#block1:表示可能出现错误的代码块
#ExceptionName[as alias]:可选参数,用于指定要捕获的异常。ExceptionName表示要捕获的异常名称,as alias记录异常具体内容的别名。
#block2:进行异常处理的代码块例如:
处理前:
def division(a,b):
result = a/b
print(result)
division(4,2)
division(4,0)运行结果如下:
2.0
Traceback (most recent call last):
File "E:\PYTHON\base4.py", line 25, in <module>
division(4,0)
File "E:\PYTHON\base4.py", line 21, in division
result = a/b
ZeroDivisionError: division by zero处理后无异常:
def division(a,b):
result = a/b
print(result)
if __name__ == '__main__':#规定,主程序,默认执行以下代码
try:
division(4,2)
print('成功了,除数正常')
except ZeroDivisionError:
print('出错了,除数不能为0')运行结果如下:
2.0
成功了,除数正常处理后捕获异常:
def division(a,b):
result = a/b
print(result)
if __name__ == '__main__':#规定,主程序,默认执行以下代码
try:
division(4,0)
print('成功了,除数正常')
except ZeroDivisionError:
print('出错了,除数不能为0')运行结果如下:
出错了,除数不能为02.2 try...except...else
try...except...else语句,else语句用于指定当try语句块中没有发现异常时要执行的语句块。
例如:
def division(a,b):
result = a/b
print(result)
if __name__ == '__main__':#规定,主程序,默认执行以下代码
try:
division(4,2)
except ZeroDivisionError:
print('出错了,除数不能为0')
else:
print('成功了,除数正常,一切顺利!')运行结果如下:
2.0
成功了,除数正常,一切顺利!2.3 try...except...finally
如果程序中有一些在任何情形下都必须执行的代码,那么可以将它放在finally语句的代码块中。
例如:
def division(a,b):
result = a/b
print(result)
if __name__ == '__main__':#规定,主程序,默认执行以下代码
try:
division(4,2)
except ZeroDivisionError:
print('出错了,除数不能为0')
else:
print('成功了,除数正常,一切顺利!')
finally:
print('over')运行结果如下:
2.0
成功了,除数正常,一切顺利!
over边栏推荐
- 迟来的2021年终总结
- Summary of common redis commands (self provided)
- 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
- 堆操作
- 新版数据同步问题
- PMP【敏捷教材+全真模拟题】,续6月25日考试之后,敏捷就成为了重中
- Leetcode - number of operations, non repeating numbers, diagonal traversal, Joseph Ring
- 2021-06-29
- 百度提出动态自蒸馏方法,结合交互模型与双塔模型实现稠密段落检索
- Heuristic merging simple problem on tree
猜你喜欢

Understanding of entropy and cross entropy loss function

SRTT-110VDC-4H-C时间继电器

Easy start, swagger

How Charles installs and uses

游戏测试的概念是什么?测试方法和流程有哪些?

Svg verification code recognition experience

About the reptile thing

最小堆提升每次排序的效率

DataTables warning: table id=campaigntable - cannot reinitialize datatable. solve

Daily question (retrospective)
随机推荐
腾讯面试之--请你设计一个实现线程池顺序执行
提速1200倍!MIT开发新一代药物研发AI,吊打老模型
Principle and configuration of MPLS LDP
Introduction to grpc
How Charles installs and uses
解决pycharm使用powershell出错问题
Srtt-110vdc-4h-c time relay
Ry-d1/1 voltage relay
Installing CONDA and configuring Jupiter
Table lock query and unlocking in SQL development part 1
使用Mock技术帮助提升测试效率的小tips,你知道几个?
最小堆提升每次排序的效率
.net core version 2.2 cross domain configuration
Qt创建文件夹的两种方式区别
Leetcode - sliding window extremum, search tree postorder traversal, statistical difference pairs, dividing equal subsets
设置结构体字节对齐
7、实时数据备份和实时时钟相关定义
ERROR:bokeh.core.validation.check:E-1001 (BAD_COLUMN_NAME)
4.8 HD-GR GNSS导航软件源码
[leetcode] 35. Search the insertion position