我使用自定义Django模型管理器来创建实例。实例的字段派生自从给定URL获取的数据。其中一个字段是包含我需要打开的JSON报告的文件名。我的问题是 - 如果我确定发生了错误(找不到文件,内容无效等),在create()方法中抛出异常是否合理并且是否有抛出的首选异常类型?
模型需要解析的数据来创建有效的实例,所以在执行create()方法之前我已经知道模型无效。
class IndexingUpdateRunManager(models.Manager):
def create_from_run(self,run_history_url):
run_info_dict = self.extract_fields_from_url(run_history_url)
run_config_file = run_info_dict["run_config_file"]
report_filename = run_info_dict["status_report_file"]
try:
out_fh = open(report_filename,'r')
report_data = json.loads(out_fh)
status_code=report_data["status"]
except Exception, e:
# throw an exception?
this_run=self.create(run_config_file_used=run_config_file,
report_filename = report_filename,
run_status_code=status_code)
return this_run
class MyUpdateRun(models.Model):
run_config_file_used = models.FilePathField(max_length=1024,
help_text="config file for run")
report_filename = models.FilePathField(max_length=1024,
help_text="status report file for run")
run_status_code = models.IntegerField(help_text="status code for overall run execution")
objects = MyUpdateRunManager()
>>MyUpdateRun.objects.create_from_run("https://server/job_status/builds/200/")
答案 0 :(得分:0)
你可以引发一个ObjectDoesNotExist(来自django.core.exceptions),你也可以创建自己的异常调用,如:
class MyException(ObjectDoesNotExist): 通
并在某些特定情况下提出它,即Django没有提供令人满意的例外。
Ps。:您的异常仍然可以从基本异常继承: class MyException(Exception): 通