2013-02-24 3 views
0

Django의 File Storage API와 관련된 모든 예외를 catch해야합니다. 읽기 또는 쓰기 등이 될 수 있습니다. 여기에는 해당 API에 정의 된 일반 예외 클래스가 없습니다. 예를 들어, FileSystemStorage (기본값)을 사용하면 던져진 예외는 IOError이지만 S3와 같은 원격 저장소를 사용하고 있습니까? 몇 가지 일반적인 Boto 예외를 추가 할 수는 있지만이 코드를 일반화하고 나중에 선택할 백엔드 저장소와 분리해야합니다.Django에서 파일 저장소 처리에 대한 포괄적 인 Exception 클래스는 무엇입니까?

이 상황을 설명하는 샘플 코드는 다음과 같습니다

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 = '' 

나는 except 절에 어떤 예외 클래스를 확인해야합니까?

답변

0
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 
+0

이것은 'except : pass'를 사용하는 것과 동일하므로 꼭 피하고 싶습니다. 모든 예외 클래스는 (모든 클래스가'Exception'을 서브 클래스로 만들기 때문에) 갇히게 될 것이고, 따라서 내가 침묵시키고 자하는 오류의 종류에 대해 명시 적으로 설명하지 않을 것입니다. –

+0

ok 다시 문제를 검색합니다 – catherine

+0

@Mandx 답변 업데이트 – catherine