Python 什么';Django中重新聚集文件存储处理的catch all异常类是什么?

Python 什么';Django中重新聚集文件存储处理的catch all异常类是什么?,python,django,file,django-forms,django-storage,Python,Django,File,Django Forms,Django Storage,我需要捕获与Django的文件存储API相关的所有异常,可能是用于读取或写入等。这里的问题是该API中没有定义通用异常类。例如,当使用FileSystemStorage(默认值)时,抛出的异常是IOError,但是如果我使用的是远程存储,比如S3?我知道我可以添加一些通用的Boto异常,但我想要的是让这段代码保持通用性,并与我以后选择的任何存储后端分离 这是解释这种情况的示例代码: import contextlib class SomeForm(forms.ModelForm): t

我需要捕获与Django的文件存储API相关的所有异常,可能是用于读取或写入等。这里的问题是该API中没有定义通用异常类。例如,当使用
FileSystemStorage
(默认值)时,抛出的异常是
IOError
,但是如果我使用的是远程存储,比如S3?我知道我可以添加一些通用的Boto异常,但我想要的是让这段代码保持通用性,并与我以后选择的任何存储后端分离

这是解释这种情况的示例代码:

import contextlib

class SomeForm(forms.ModelForm):
    textfield = forms.CharField()

    class Meta:
        model = CSSTemplate

    def __init__(self, *args, **kwargs):
        super(SomeForm, self).__init__(*args, **kwargs)

        if not self.is_bound and self.instance and self.instance.file_field:
            try:
                with contextlib.closing(self.instance.file_field.file) as file_obj:
                    file_obj.open('r')
                    self['textfield'].field.initial = file_obj.read()
            except (IOError, ):  # <-- ???
                self.instance.file_field = ''
导入上下文库
类SomeForm(forms.ModelForm):
textfield=forms.CharField()
类元:
模型=CSSTemplate
定义初始化(self,*args,**kwargs):
超级(某种形式,自我)。\uuuuu初始值(*args,**kwargs)
如果未绑定self.is_以及self.instance和self.instance.file_字段:
尝试:
使用contextlib.closing(self.instance.file_field.file)作为file_obj:
文件对象打开('r')
self['textfield'].field.initial=file_obj.read()

除了(IOError,):#这正是我想要避免的,因为这与使用
except:pass
相同。每个异常类都会被捕获(因为它们都是子类
exception
),因此我没有明确说明我想要消除的错误类型。
try:

except OSError:
   //raise if file is already exist

except IOError:
   // is not a directory 

except ValueError:
   //raise if someone is attempted to access then denied