11,850
社区成员




新手小白正在学习 Exception 异常一章,练习以下代码后,老是报错,但找不到问题所在:
"""
9.
9.1 自定义异常类
9.2 抛出异常
9.3 捕获该异常
"""
# 9.1 自定义异常类
class ShortInputError(Exception):
def __int__(self, length, min_len):
self.length = length
self.min_len = min_len
def __str__(self):
return f'你输入的长度是{self.length}, 不能少于{self.min_len}。'
def main():
# 9.2 抛出异常;尝试执行;用户输入密码如果长度小于3,则抛出异常。
try:
con = input('请输入密码:')
if len(con) < 3:
raise ShortInputError(len(con), 3)
# 9.3 捕获异常
except Exception as result:
print(result)
else:
print('密码输入已完成。')
main() # 执行
———————————————————————————————————————————————————————————————————————————————————————
# 有bug,老报错:
# Traceback (most recent call last):
# File "D:\PycharmProjects\pythonProject\Exception Errors.py", line 177, in main
# raise ShortInputError(len(con), 3)
# __main__.ShortInputError: <exception str() failed>
#
# During handling of the above exception, another exception occurred:
#
# Traceback (most recent call last):
# File "D:\PycharmProjects\pythonProject\Exception Errors.py", line 185, in <module>
# main()
# File "D:\PycharmProjects\pythonProject\Exception Errors.py", line 180, in main
# print(result)
# File "D:\PycharmProjects\pythonProject\Exception Errors.py", line 169, in __str__
# return f'你输入的长度是{self.length}, 不能少于{self.min_len}。'
# AttributeError: 'ShortInputError' object has no attribute 'length'
———————————————————————————————————————————
__int__
应改为
__init__
length好像是内部函数,换个名字再试试