网页设计与网站建设景点介绍,如何给自己网站做外链,心得网站建设,石家庄网站开发公司电话文章目录 异常格式异常类型自定义抛出异常类 异常格式
异常处理格式#xff08;else和finally可省略#xff09;
try:path1#xff08;可能发送异常的部分#xff09;
except:path2
else:path3
finally:path4如果没发送异常#xff0c;执行path1, path3, path4
如果发送… 文章目录 异常格式异常类型自定义抛出异常类 异常格式
异常处理格式else和finally可省略
try:path1可能发送异常的部分
except:path2
else:path3
finally:path4如果没发送异常执行path1, path3, path4
如果发送异常执行异常之前的部分以及path2, path4举例
try:print(path 1)open(a.txt, r)print(path 2)
except:print(path 3)
else:print(path 4)
finally:print(path 5)输出发送异常输出open发送异常没有a.txt文件
path 1
path 3
path 5举例
try:print(path 1)#open(a.txt, r)print(path 2)
except:print(path 3)
else:print(path 4)
finally:print(path 5)输出没有异常输出
path 1
path 2
path 4
path 5异常类型
异常类型含义举例NameError使用没有定义的变量TypeError操作或函数应用于不适当类型的对象a 1 ‘b’ValueError操作或函数的参数具有正确的类型但不合法int(‘ab’)KeyError访问字典中不存在的键ZeroDivisionError除数为0时触发a 2 / 0IOError读取不存在或无法访问的文件ImportError导入不存在的模块或包AttributeError访问的对象不存在的属性KeyboardInterrupt用户中断程序执行时发生SyntaxError语法错误异常IndexError索引异常
在使用异常类型捕获异常的时候异常的类型需要和可能发送异常的类型对得上不然还是会抛出异常
带异常类型的格式 当不知道错误类型时使用Exception代替所有错误类型
try: print(可能出现异常的代码)f open(a.txt, r)
except Exception as e:print(发生异常时执行)print(e)
else:print(当没有出现异常时执行)print(f.read())
finally:print(无论是否出现异常都会执行)# 这个模块一般用于资料关闭或回收如文件关闭网络连接关闭数据库关闭f.close()单一异常处理格式
try:a 1 / 0
except ZeroDivisionError:print(除数不能为0)多个异常处理格式
try:path1
except TypeError as e:print(e)
except ValueError as e:print(e)
except:path4多个异常合并处理格式
try:path1
except (TypeError, ValueError) as e:print(e)
except:path4自定义抛出异常类
下面自己自定义一个判断手机号位数是够合法的异常类如果不合法则抛出异常
# 自定义异常类
class PhoneNumberNotDigitError(Exception):def __init__(self, msg):self.__msg msgdef __str__(self):return self.__msg# 定义一个用来判断手机号位数是否合法的异常类
class PhoneNumberLengthError(Exception):def __init__(self, msg):self.__msg msgdef __str__(self):return self.__msg# 抛出异常
def get_phone_number():pn input(请输入手机号)if pn.isdigit() False:# 抛出异常raise PhoneNumberNotDigitError(手机号不合法)elif len(pn) ! 11:raise PhoneNumberLengthError(手机号位数不对)print(输入的手机号合法)# 捕获异常
try:num get_phone_number()
except (PhoneNumberLengthError, PhoneNumberNotDigitError) as e:print(e)
else:print(num)