自定义异常 | 手把手教你入门Python之七十九-阿里云开发者社区

开发者社区> Python学习站> 正文

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

简介: 本节介绍了可以使用 raise 关键字来自定义异常。

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

运⾏结果如下:
image.png

配套视频

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
Python学习站
使用钉钉扫一扫加入圈子
+ 订阅

Python学习资料大全,包含Python编程学习、实战案例分享、开发者必知词条等内容。

官方博客
官网链接