我很难弄清楚这一点。我正在尝试捕获一个不存在的特定对象的异常,但是该行
foreach($a as $key => $value){
if(array_key_exists($key, $b) && $value != $b[$key]){
$a[$key] = $b[$key];
} else{
$a[$key] = 0;
}
}
if($diff = array_diff_key($b, $a)){
foreach($diff as $key => $value){
$a[$key] = $value;
}
}
ksort($a);
print_r($a);
给我from django.core.exceptions import DoesNotExist
警告。如果该文件中未指定例外,我在哪里可以找到它?
答案 0 :(得分:2)
from django.core.exceptions import ObjectDoesNotExist
您还可以捕获特定模型的异常,如下所示:
from .your_models import ModelClass
ModelClass.DoesNotExist
答案 1 :(得分:2)
如果模型未知,则该异常称为ObjectDoesNotExists
[Django-doc],因此可以将其导入为:
from django.core.exceptions import ObjectDoesNotExist
Object
用于避免与每个模型都具有的DoesNotExist
异常混淆(您可以将Object
视为所有模型的对象的“概括”)。
但是请注意,如果您知道所查询模型的模型是什么,则最好使用更严格的异常,例如:
try:
SomeModel.objects.get(pk=14)
except SomeModel.DoesNotExist:
# ... do something
pass
类似于model attributes [Django-doc]文档中指定的内容:
Django提供
DoesNotExist
异常作为每个模型类的属性,以标识找不到的对象类并允许您捕获特定的模型类和try / except。例外是django.core.exceptions.ObjectDoesNotExist
的子类。
由于无法获取某些(相关)模型,因此您(偶然)不捕获异常。通常,try
-except
块的跨度应尽可能小,并且异常应尽可能“显式”。