自定义异常 | 手把手教你入门Python之七十九

上一篇: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()

运⾏结果如下:
自定义异常 | 手把手教你入门Python之七十九

配套视频

上一篇:阿里云RDS导入mysql数据库


下一篇:python3 三级菜单-基础版