一、异常
| 名称 | 描述 |
|---|---|
| 异常 | 程序在运行时,如果Python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常 |
| 抛出异常 | 程序停止执行并提示错误信息这个动作,我们称之为抛出异常 |
| 错误类型 | Python解释器抛出异常时,最后一行错误信息的第一个单词就是错误类型 |
提示:
- 程序开发过程中,很难将所有特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性
1.1 异常捕获
开发中,对某些代码的执行不能确定是否正确,可以增加try来捕获异常
1.1.1 简单的异常捕获
try:
不能确定正确的代码
except:
错误处理代码
eg:
try:
num = int(input("请输入一个整数:"))
except:
print("请输入正确的整数")
print('-'*50)
1.1.2 错误类型捕获
try:
# 尝试执行的代码
pass
except '错误类型1':
# 针对错误类型1,对应的代码处理
pass
except ('错误类型2', '错误类型3'):
# 针对错误类型2和错误类型3,对应的代码处理
pass
except Exception as e:
print("未知错误:%s" % e)
1.1.3 异常捕获的完整语法
try:
# 尝试执行的代码
pass
except '错误类型1':
# 针对错误类型1,对应的代码处理
pass
except '错误类型2':
# 针对错误类型2,对应的代码处理
pass
except ('错误类型3', '错误类型4'):
# 针对错误类型3和错误类型4,对应的代码处理
pass
except Exception as e:
# 打印错误信息
print(e)
else:
# 没有异常才执行的代码
pass
finally:
# 无论是否异常都会执行的代码
pass
或
try:
# 尝试执行的代码
pass
except Exception as e:
# 打印错误信息
print(e)
else:
# 没有异常才执行的代码
pass
finally:
# 无论是否异常都会执行的代码
pass
1.2 异常的传递性
当某个函数/方法执行出现异常,会将异常传递给函数/方法的调用一方,如果传递到主程序,仍然没有进行异常处理,程序才会被终止
- 在开发中,在主函数中增加异常捕获
主函数调用其他函数是,只要出现异常就会传递到主函数的异常捕获中,这样就不需要在代码中大量的写异常捕获,从而保证代码的整洁
1.3 抛出异常
1.3.1 主动抛出异常
应用场景:根据应用程序的特定业务需求主动抛出异常
def input_passwd():
my_pwd = input("请输入密码:")
if len(my_pwd) >= 8:
return my_pwd
else:
# 创建异常对象(可以使用错误信息字符串作为参数)
ex = Exception("密码长度不够")
# 主动抛出异常
raise ex
try:
print(input_passwd())
except Exception as e:
print(e)
或
class LenError(Exception):
def __init__(self, error_info):
super().__init__(self)
self.error_info = error_info
def __str__(self):
return self.error_info
def input_passwd():
my_pwd = input("请输入密码:")
if len(my_pwd) >= 8:
return my_pwd
else:
raise LenError("密码长度不够")
print(input_passwd())
或
class LenError(Exception):
def __init__(self, error_info):
super().__init__(self)
self.error_info = error_info
def __str__(self):
return self.error_info
def input_passwd():
my_pwd = input("请输入密码:")
if len(my_pwd) >= 8:
return my_pwd
else:
raise LenError("密码长度不够")
try:
print(input_passwd())
except Exception as e:
print(e)
更新中......












网友评论