上一篇:With关键字的使用 | 手把手教你入门Python之七十八
下一篇:详解迭代器的使用 | 手把手教你入门Python之八十
本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。
自定义异常
系统内置的异常:
# ZeroDivisionError
print(1 / 0)
# FileNotFoundError
open('xxx.txt')
# FileExistsError
import os
os.mkdir('test') # 多次创建同名的文件夹
# ValueError
int('hello')
# KeyError
person = {'name':'zhangsan'}
person['age']
# SyntaxError
print('hello','good')
# IndexError
name = ['zhangsan', 'lisi']
names[5]
要求:让用户输入用户名和密码,如果用户名和密码的长度在6~12位正确,否则不正确。
class LengthError(Exception):
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return '长度必须要在{}至{}之间'.format(self.x, self.y)
password = input('请输入您的密码:')
m = 6
n = 12
if m <= len(password) <= n:
print('密码正确')
else:
# print('密码格式不正确')
# 使用 raise 关键字可以抛出一个异常
raise LengthError(m, n)
# 把密码保存到数据库里
print('将密码保存到数据库')
你可以⽤raise语句来引发⼀个异常。异常/错误对象必须有⼀个名字,且它们应是Error或Exception类的⼦类下⾯是⼀个引发异常的例⼦:
class ShortInputException(Exception):
'''⾃定义的异常类'''
def __init__(self, length, atleast):
#super().__init__()
self.length = length
self.atleast = atleast
def __str__(self):
return '输⼊的⻓度是 %d,⻓度⾄少应是 %d'% (self.length, self.atleast))
def main():
try:
s = input('请输⼊ --> ')
if len(s) < 3:
# raise 引发⼀个⾃定义的异常
raise ShortInputException(len(s), 3)
except ShortInputException as result: # x这个变量被绑定到了错误的实例
print('ShortInputException:' % result)
else:
print('没有异常发⽣.')
main()
运⾏结果如下: