概述
Python 异常处理
1.捕获异常 (作用:程序运行过程中,可能会出现意想不到的异常,如果异常未被解决,程序会崩溃,停止运行)
#例如,以下例子
a='name'
print(a[10]) #报错:IndexError: string index out of range
print('今天是个好天气') #报错后面的程序将不会执行
所以,异常处理就显得很有必要
捕获异常的基础语法:
1.处理异常定义,如果出现异常,我们会让它按照事先规定的规则去执行对应的操作,从而记录报错的log日
2.语法:
try(要运行有可能出现异常的代码):
(缩进)存放可能出现报错的代码模块
except(异常):
(缩进)出现异常的时候要运行的代码(执行的操作),记录日志
一旦try里面的代码报错,会立即跳到except,try报错代码的下面的剩余语句将不会执行
try:
a = 'name'
print(a[10])
print('今天是个好天气')
except:
print('try模块存在报错,后续程序不能被执行')
输出结果:
try模块存在报错,后续程序不能被执行
3.如果try模块下的代码没有出现异常,则正常执行,不会执行except模块下的代码
try:
a = 'name'
print(a[2])
print('今天是个好天气')
except:
print('try模块存在报错,后续程序不能被执行')
输出结果:
m
今天是个好天气
4.一般,在写异常处理模块时,都要预先考虑到,可能会出现报错的地方,然后将其放到try里面,从而防止报错影响程序的整体执行
#前期预判
a = 'name'
print(a[2]) #a变量是一个字符串,根据索引值取字符串的值,所以可能存在索引值超出字符串的长度的报错
print('今天是个好天气')
#案例二
b=12
c=23
print(b*c)
#b和c都是变量,如果给予b和c赋予的数据类型非int和float类型,那就会报数据类型的错误,所以此处就需要加 异常处理
5.使用try......except......语句捕获了异常,但是不清楚是哪里出现问题,是数据类型错误、超出范围错误还是其他的错误等等
面对以上的问题,可以使用 except Exception as err:将错误类型赋值给err ,打印出来
try:
a = 'name'
print(a[20])
print('今天是个好天气')
except Exception as err:
print('try模块存在报错{},后续程序不能被执行'.format(err))
输出结果:
try模块存在报错string index out of range,后续程序不能被执行
注意:工作当中,最好用以上的方法捕获异常,这样就可以很直观的看到报错的内容,也好定位问题
6.捕获异常的进阶:指明出现的异常类型
方法:先不加异常,执行代码,查看程序可能出现的报错类型,然后将报错的类型加入except 语句中就行
语法:
try:
(缩进)执行的代码模块
except 报错类型 as err:
(缩进)print('异常{}'.format(err))
finally: ---------------->该模块属于,不管有没有报错,里面的代码都会被执行
(缩进) print('你好世界')
lst = ['hello']
a = 4
b = 0
try:
print(a/b)
print(lst[2])
except IndexError as err:
print('出现了异常:{}'.format(err))
except ZeroDivisionError as err:
print('出现除法异常:{}'.format(err))
finally:
print('hello wold')
#结果:
'''
出现除法异常:division by zero
出现除法异常:division by zero
hello wold
'''
7.手动抛出异常 raise
raise手动抛出异常,让程序终止运行
def join_team(age,gender):
if age > 22:
raise ValueError('年龄要小于22')
print('可以加入team')
print(join_team(23,'girl'))
'''
raise ValueError('年龄要小于22')
ValueError: 年龄要小于22
'''
8.错误类型介绍(以下错误类型,可以接下来了解使用)
ImportError :无法引入模块或包
IndexError:下标索引超出序列边界
NameError:使用一个还未赋予对象的变量
TypeError:传入的对象类型与要求不符合
SyntaxError:代码逻辑语法错误,不能执行,不能捕获
ValueError:传入一个不被期望的值,即使类型不正确
KeyError:试图访问你字典里不存在的key
IOError:输入输出异常,文件操作
9.异常分组
好处:如果我们发现了一个验证级别为阻塞级别的bug,短信通知开发人员马上集合解决问题,如果不同的错误类型,异常处理的行为是一样的,组合起来,就可以简化代码
try:
1 / 0
['hello'][3]
{'name':'pyrhon'}['age']
except (IndexError,KeyError) as e:
'短信通知这里出现很严重的问题'
print('可以捕获IndexError和KeyError')
except ZeroDivisionError as e:
'记录日志'
print('除法出现异常{}'.format(e))
最好不要直接用Exception,因为可以报错异常,但是也不知道报的是什么异常,再次排查问题时,会很浪费时间
标签:err,Python,except,try,处理,报错,print,异常
来源: https://www.cnblogs.com/lucky1212/p/14076433.html
最后
以上就是健康荔枝为你收集整理的python中异常处理的作用,Python之异常处理的全部内容,希望文章能够帮你解决python中异常处理的作用,Python之异常处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复