简介
程序运行过程中,代码遇到的错误,给出错误的提示
异常:程序代码在运行过程中遇到的错误,程序会报错,会终止程序代码的运行
捕获异常
- 异常捕获:是指在程序代码运行过程中,遇到错误,不让程序代码终止,让其继续运行,同时可以给使用者一个提示信息,并记录这个错误,便于后期改进
- 规则如下:
try:
可能发生异常的代码
except 异常的类型:
发生异常执行的代码
示例代码如下所示:
try:
num = input("请输入一个数字:")
num = 10 / int(num)
except ZeroDivisionError:
print "你输入有错,请重新输入"
在上面的代码里只能捕获 ZeroDivisionError
这种类型的异常
捕获多个类型的异常
要想捕获多个类型的异常,可以写多个 try
except
,也可以在 except
那里将多个异常组成元组,如下所示:
try:
a = input("请输入一个数字:")
num = int(a)
num = 10 / num
except (ZeroDivisionError , ValueError ):
print "你输入有错,请重新输入"
或者写成下面这种
try:
a = input("请输入一个数字:")
num = int(a)
num = 10 / num
except ZeroDivisionError:
print "你输入有错,请重新输入"
except ValueError:
print "请输入数字"
打印异常信息
通过添加 as
的方式打印出异常信息,如下所示:
try:
a = input("请输入一个数字:")
num = int(a)
num = 10 / num
except ZeroDivisionError as e:
print ("你输入有错,请重新输入", e)
except ValueError:
print "请输入数字"
捕获所有的异常
通过下面的方式可以捕获所有的异常信息
try:
# 可能发生异常的代码
except Exception as e :
# 发生异常执行的代码
print e
异常的完整结构
try:
# 可能发生异常的代码
except Exception as e :
# 发生异常执行的代码
print e
else:
# 代码没有发生异常会执行
finally:
#不管有没有发生异常,都会执行
异常的传递
这个是异常处理的底层机制,是原理层面上的,不需要我们自己写代码实现,是python已经实现好的
抛出自定义异常
程序代码报错的原因是不符合语法,Python
的作者在代码中使用了 if
判断,如果代码有错就抛出异常错误:
抛出异常:
raise 异常对象
抛出自定义异常:
1. 自定义异常类,继承 `Exception` 或者 `BaseException`
2. 选择书写,定义 `__init__` 方法,定义 `__str__` 方法
3. 在合适的时机抛出异常对象即可
如下所示:
class Password(Exception):
def get_password(self):
password = input("请输入密码:")
if len(password) >= 6:
print "密码长度合格"
else:
raise PasswordLengthError("长度不足6位")
try:
get_passwod()
except PasswordLengthError as e:
print e
网友评论