异常处理概念
在程序运行的时候,如果程序出现了问题,程序会停止程序的执行,并且会给出一些错误的信息,这种就是异常。
程序停止执行并且提示错误信息这个动作,就叫做抛出异常
为什么会有异常处理的这个概念?
为了保证程序的稳定性和健壮性
稳定性:保证程序正常稳定的运行
健壮性:能够自己处理一些异常信息,处理异常
python异常处理的语法
try:
要执行的代码
except:
出现错误的代码
print()
案例:要求用户输入一个整数
while True:
try:
num=int(input('请输入整数:'))
print(num)
break
except:
print('请输入正确的整数')
print('输完了')
输入错误了,还想让他继续运行,直到输入正确的时候就不运行
作用:能够对于异常的地方进行处理,能够给到提示,并且还会执行后面的代码
案例: 提示用户输入一个整数,对用户输入的整数进行整除
try:
num=int(input('请输入整数'))
result=5/num
print(result)
except:
print('请输入正确的整数,不要瞎写')
对不同的错误类型,做出不同的响应,捕获错误异常
try:
要执行的代码
except 错误类型1:
出现错误的代码
except 错误类型2:
出现错误的代码
try:
要执行的代码
except (错误类型1,错误类型2):
出现错误的代码
except 错误类型2:
出现错误的代码
try:
num=int(input('请输入整数'))
result=5/num
print(result)
except (ValueError,ZeroDivisionError):
print('请输入正确的整数,不要瞎写')
常见的错误类型:
FileNotFoundError
TypeError
keyError
runtimeError
IOError
IndexError
未知的错误,需要捕获 exception
错误类型的父类 BaseException是exception的父类
异常之中的祖宗就是BaseException
exception 所有的异常
# 异常的重点 在于语法
try:
要执行的代码
except (错误类型1,错误类型2) as 变量名 捕获到错误:
出现错误的代码
except 错误类型2 as 变量名 捕获到错误:
出现错误的代码
try:
num=int(input('请输入整数'))
result=5/num
print(result)
except Exception as e:
print('所有的错误,我都在这里处理掉%s' %e)
想要有错误提示就用 as 变量名捕获到
def demo01():
try:
num = int(input('请输入整数'))
print(num)
except Exception as e:
print(e)
try:
demo01()
except as e:
print(e)
异常传递
def demo01():
num = int(input('请输入整数'))
return num
try:
a=demo01()
print(a)
except Exception as e:
print(e)
异常处理的完整语法
try:
尝试的代码
except 错误类型 as e:
打印错误的信息
except Expection as e:
打印错误的信息
else:
没有异常就会去执行
finally:
无论是否有异常都会执行
try:
num=int(input('请输入整数'))
result=5/num
print(result)
except ZeroDivisionError as e:
print('0错误')
except ValueError as e:
print('值错误')
except Exception as e:
print('所有的错误,我都在这里处理掉%s' %e)
else:
print('aaa')
finally:
print('bbb')
异常 raise 主动抛出异常 自定义异常
有些需求是有特定的要求 满足我的条件出现了错误的时候 希望抛出异常
需求:
定义一个密码函数,提示输入用户密码
如果用户输出的长度大于8,抛出异常 自定义一个异常
如果用户输出的长度小于等于8,返回密码
def input_pwd():
pwd=input('请输入密码:')
if len(pwd)<=8:
return pwd
# 这个是你自定义的异常
pwd_error=Exception('密码超出8位,请修改')
raise pwd_error
a=input_pwd()
print(a)