日期的鲁棒性 日期类使用三个整数记录年、月、日,其中月份的取值范围为1-12,日期的取值范围为1-31,尝试写出该类的构造函数,接受三个整数作为年月日的值,并验证月份和日期的有效性,当给出的日期数据无效时抛出自定义的日期范围异常,并写出测试代码,从不同的角度触发异常。
时间: 2023-11-23 09:05:41 浏览: 79
DSP中的基于DWT-DCT变换强鲁棒性的数字水印算法的研究
好的,我来解答你的问题。
首先,我们需要定义一个自定义的日期范围异常类。代码如下:
```python
class DateRangeError(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
```
接下来,我们可以定义日期类,并在构造函数中验证月份和日期的有效性。代码如下:
```python
class Date:
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
if not (1 <= self.month <= 12):
raise DateRangeError("Invalid month value")
if not (1 <= self.day <= 31):
raise DateRangeError("Invalid day value")
```
最后,我们可以编写测试代码,从不同的角度触发异常。代码如下:
```python
try:
# 日期有效
date1 = Date(2021, 9, 30)
# 月份无效
date2 = Date(2021, 13, 1)
# 日期无效
date3 = Date(2021, 9, 32)
except DateRangeError as e:
print(e.message)
```
在这个测试代码中,我们测试了三种情况:
- 日期有效,不会抛出异常。
- 月份无效,会抛出自定义的日期范围异常,并输出"Invalid month value"。
- 日期无效,会抛出自定义的日期范围异常,并输出"Invalid day value"。
阅读全文