假设某网站只允许用户上传jpg、png和jpeg格式的文件,要求编写代码,通过抛出自定义异常类对象并捕捉它实现用户上传头像格式检测的功能。注:让用户输入头像文件名模拟上传头像的操作
时间: 2024-01-24 16:17:38 浏览: 21
好的,我可以给你提供一个实现方式。首先,我们需要定义一个自定义异常类,比如命名为`InvalidImageFormatException`,如下所示:
```python
class InvalidImageFormatException(Exception):
def __init__(self, message):
self.message = message
```
然后,我们可以编写一个函数,用于检测用户上传的头像文件格式是否合法。该函数需要接收一个参数,即用户上传的文件名,代码实现如下:
```python
def check_image_format(file_name):
valid_formats = ['jpg', 'png', 'jpeg']
file_format = file_name.split('.')[-1]
if file_format not in valid_formats:
raise InvalidImageFormatException('Invalid image format. Only jpg, png and jpeg formats are allowed.')
```
以上代码中,我们首先定义了三种合法的图片格式,然后通过字符串操作获取用户上传的文件格式,判断该格式是否在合法格式列表中。如果不在,则抛出`InvalidImageFormatException`异常,并将异常信息设置为"Invalid image format. Only jpg, png and jpeg formats are allowed."。
最后,我们可以在程序中调用该函数,并通过`try-except`语句捕捉`InvalidImageFormatException`异常,如下所示:
```python
try:
file_name = input('Please enter the image file name: ')
check_image_format(file_name)
print('Image format is valid.')
except InvalidImageFormatException as e:
print(e.message)
```
以上代码中,我们首先让用户输入文件名,然后调用`check_image_format`函数检测文件格式是否合法。如果文件格式合法,则输出"Image format is valid.";否则,捕捉`InvalidImageFormatException`异常,并输出异常信息。