处理文件打开和文件关闭异常的正确方法

Proper way to handle file open and file close Exception

请看这个实现:

@staticmethod
    def read_json_file__(file):
        reports = []
        try:
            with open(file) as json_file:
                data = json.load(json_file)
                for d in data:
                    # Do my stuff...
            try:
                json_file.close()
            except IOError as ex:
                raise Exception(ex)
            return reports
        except FileNotFoundError as ex:
            raise Exception('File \'{f}\' does not exist.'.format(f=ex.filename))
        except Exception:
            raise

我试图找到处理 Exceptions 的方法,所以我处理文件打开 Exception (FileNotFoundError) 和文件关闭 Exception (IOError)并添加 Generic Exception 并将其提升到调用方方法。 这是处理 Exception 的正确方法吗?

使用with open(file) as json_file时不需要关闭,但如果使用json_file = open(file)则需要关闭(使用json_file.close())。