Python入门基础(10)_异常_1
最近有点忙,到现在快一个月没写了,罪过罪过,继续学习
异常:python程序在运行时,如果python解释器遇到一个错误,那么程序就会停止执行,并且会提示一些错误信息,这就是异常.
抛出异常:程序停止执行并提示错误信息的动作就是抛出异常.
比如下面这个例子:
num=int(input("请输入一个数字:")) print("报错了吧!弟弟")
如果我输入的是一个正确的数字,那么会得到下面的结果:
请输入一个数字:1
报错了吧!弟弟
但是如果我输入非数字,将会得到下面的结果:
请输入一个数字:A Traceback (most recent call last): File "C:/Users/users/PycharmProjects/study/zixue_good/socket_py/raise_study.py", line 1, in <module> num=int(input("请输入一个数字:")) ValueError: invalid literal for int() with base 10: 'A'
你会发现程序不止发生错误,就连我的”报错了吧!弟弟”都没有输出来.在程序的开发过程中,很多代码我们是不能确定是否正确;也就是说,在某些代码里面可能会存在异常(如果你是大佬,毫无错误,当我没说过),这时候,我们就需要捕获异常.
1.捕获异常
捕获异常的语法:
try:
尝试执行的代码(可能有错误的代码块)
except:
出现错误的处理(try里面的代码出现错误之后给点提示)
继续看上面的那个例子,现在代码改写成这样了:
try: num=int(input("请输入一个数字:")) except: print("输入数字啊!猪") print("报错了吧!弟弟")
输入一个正确的数字,except里面的代码并不会执行,因为我的try里面并没有错误:
请输入一个数字:1
报错了吧!弟弟
如果我输入一个非数字的字符,try里面出现错误,except就会执行,后面的print也会继续执行:
请输入一个数字:啊
输入数字啊!猪
报错了吧!弟弟
2.错误类型捕获
程序在执行的过程中,会有各种各样的类型错误,比如(
BaseException | 所有异常的基类 |
SystemExit | 解释器请求退出 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
Exception | 常规错误的基类 |
)这些类型错误,还有很多种类型错误,感兴趣的可以去菜鸟教程看一下,这里就不一一列举了.语法如下:
try:
#尝试执行的代码块
pass
except 错误类型1:
#针对错误类型1,对应的代码处理;
except (错误类型2,错误类型3):
#针对错误类型2和3,对应的代码处理;
except Exception as result:
print(“未知错误%s”%result)
举个例子吧:
try: num = int(input("请输入整数:")) result = 8 / num print(result) except ValueError: print("请输入正确的整数") except ZeroDivisionError: print("除 0 错误")
当我执行了上面的代码之后呢
如果我输入的是非数字字符,就会得到如下结果:
请输入整数:啊
请输入正确的整数
如果我输入0,就会得到如下结果:
请输入整数:0
除 0 错误
如果我输入正确的数字,就会得到如下结果:
请输入整数:2
4.0
但是在实际开发中,为了能够处理复杂的异常情况我们通常会使用下面这种写法:
try:
# 尝试执行的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except 错误类型2:
# 针对错误类型2,对应的代码处理
pass
except (错误类型3, 错误类型4):
# 针对错误类型3 和 4,对应的代码处理
pass except
Exception as result:
# 打印错误信息
print(result)
else:
# 没有异常才会执行的代码
pass
finally:
# 无论是否有异常,都会执行的代码
print(“无论是否有异常,都会执行的代码”)
else 只有在没有异常时才会执行的代码
finally 无论是否有异常,都会执行的代码
try: num = int(input("请输入整数:")) result = 8 / num print(result) except ValueError: print("请输入正确的整数") except ZeroDivisionError: print("除 0 错误") except Exception as result: print("未知错误 %s" % result) else: print("正常执行") finally: print("执行完成,但是不保证正确")
上面例子执行之后得到如下输出结果:
请输入整数:4
2.0
正常执行
执行完成,但是不保证正确