本篇文章中我们将简单讲解一下有关Python中的异常处理,既有在代码中有显式表达的异常处理语法,还包括Pycharm手动调试的简单操作。
目录
Python异常处理
1、try-except结构
编辑 2、try-except-else结构
raise抛出异常
常见异常类型
Pycharm程序调试
第一步:设置断点
第二步:进入调试窗口
第三步:开始调试
Python异常处理
我们先简单看一下Python中的“异常”,比如要得到两个数的商,但输入了一个0作为除数就会出现以下结果:
ZeroDivisionError: division by zero
程序的异常处理就是在原本代码的基础上,加上特定的语句,使得程序一旦报错(且是多种意义的报错),就执行另外的、备用的代码语句。以下是语法格式:
1、try-except结构
try:
可能异常的代码
except 异常类型:
异常处理代码(报错后执行)
以及第二种
try:
可能异常的代码
except 异常类型A:
异常处理代码(类型A报错后执行)
except 异常类型B:
异常处理代码(类型B报错后执行)
捕获异常类型的顺序是按照先子类后父类的顺序(子类、父类需要在面向对象的部分介绍),简单来说,我们在编写多个异常类型时,将能捕获的种类最多的异常类型写在最后。
这里的异常类型有很多种,我们拿两个数相除的程序来进行演示,对应的可能的异常分别是:被0除,数值输入错误,以及未知异常类型
try:
num1=int(input('请输入一个整数:'))
num2=int(input('请输入另一个整数:'))
result=num1/num2
print('结果', result)
except ZeroDivisionError:
print('除数为0')
except ValueError:
print('不能将字符串转为整数')
except BaseException:
print('未知异常')
2、try-except-else结构
try:
可能异常的代码
except 异常类型:
异常处理代码(报错后执行)
else:
没有抛出异常执行的代码
以及第二种写法
try:
可能异常的代码
except 异常类型:
异常处理代码(报错后执行)
else:
没有抛出异常执行的代码
finally:
无论是否异常都执行的代码
这里在逻辑上就是增加了两个可以执行更多代码的位置,不再作代码示例。
PS:如果在except后不指定异常类型,表示捕获全部异常。
raise抛出异常
使用raise关键字可以抛出一个异常,用以提醒程序出现了异常的情况,使程序可以正确的处理这些情况。
语法结构:
raise [Exception类型(异常描述信息)]
例如输入性别时,输入的不是男也不是女的代码:
try:
gender=input('请输入您的性别:')
if gender!='男'and gender!='女':
raise Exception('性别只能是男或女')
else:
print('您的性别是:', gender)
except Exception as e:
print(e)
另外再看一个输入分数的程序,要求分数必须在0到100之间,否则抛出异常:
try:
score=int(input('请输入分数:'))
if 0<=score<=100:
print('分数:', score)
else:
raise Exception('分数不正确')
except Exception as e:
print(e)
运用同样的逻辑,我们可以编写一个程序来查看三条边的长度能否构成三角形:
try:
a=int(input('请输入第一条边长:'))
b=int(input('请输入第二条边长:'))
c=int(input('请输入第三条边长:'))
if a+b>c and a+c>b and b+c>a:
print(f'三角形的边长为:{a},{b},{c}')
else:
raise Exception(f'{a}, {b}, {c}, 不能构成三角形')
except Exception as e:
print(e)
常见异常类型
简单掌握一些常见的异常类型,就已经足够我们使用。
异常类型 | 描述说明 |
ZeroDivisionError | 当除数为0时,引发的异常 |
IndexError | 索引超出范围所引发的异常 |
KeyError | 字典取值时Key不存在的异常 |
NameError | 使用一个没有声明的变量时引发的异常 |
SyntaxError | Python中的语法错误 |
ValueError | 传入的值错误 |
AttributeError | 属性或方法不存在的异常 |
TypeError | 类型不合适引发的异常 |
IndentationError | 不正确的缩进引发的异常 |
Pycharm程序调试
使用Pycharm可以方便地进行进行代码的调试:下面用一个简单的循环代码来进行演示:
i=1
while i<10:
print(i)
i+=1
如果已经对VS等IDE的使用有所了解,那么下面的调试控制方法都将是与C语言中的学习类似的。
第一步:设置断点
在代码每一行的行数的位置,左键或右键——设置断点,都可以在这一行代码处打上断点
出现红点即设置成功,这是在调试过程中在运行到此行代码则暂停程序的标志。
第二步:进入调试窗口
进入调试窗口有三种方法,一是单击右上方的小虫子(bug)的图标:
二是对代码处单机右键,找到调试的选项(我这里下载了中文包,英文情况下是debug)
三就是快捷键 shift+F9
第三步:开始调试
先认识一下调试窗口的几个功能区块
再是程序控制窗口的介绍:
然后是调试控制窗口:
最后是程序调试窗口: