python - 在Python3中,以下情况如何编写异常?

标签 python exception

我需要修改Python代码(由程序员提供),我想将其用于我的家谱项目。我对 python 很陌生,并且开始能够阅读代码。然而,我不知道如何解决以下问题。

执行代码时出现以下错误消息:

self['gebort'] += ", Taufe: %s" % place.get_title()
KeyError: 'gebort'

问题是,对于我的数据库中的一个人来说,只知道洗礼日期(此处:Taufe),但不知道出生日期。这是代码失败的情况。

这是代码基础的相关片段:

birth_ref = person.get_birth_ref()
if birth_ref:
    birth = database.get_event_from_handle(birth_ref.ref)

    self['gjahr'] = birth.get_date_object().get_year()

    if self['gjahr'] >= 1990:
        self['mindj'] = True

    self['gebdat'] = dd.display(birth.get_date_object())
    self['plaingebdat'] = self['gebdat']
    place_handle = birth.get_place_handle()
    self['geborthandle'] = place_handle
    place = database.get_place_from_handle(place_handle)
    if place:
        self['gebort'] = place.get_title()
        self['plaingebort'] = self['gebort']

    for eventref in person.get_event_ref_list():
        event = database.get_event_from_handle(eventref.ref)
        if event.get_type() in (gramps.gen.lib.EventType.CHRISTEN, gramps.gen.lib.EventType.BAPTISM):
            self['gebdat'] += ", Taufe: %s" % dd.display(event.get_date_object())

            place_handle = event.get_place_handle()
            place = database.get_place_from_handle(place_handle)
            if place:
                self['gebort'] += ", Taufe: %s" % place.get_title()

现在,我不知道在没有找到出生日期/地点时添加异常处理,以便代码不会给出任何出生值。有人能指出我正确的方向吗?

最佳答案

而不是:

dict_name['gebort'] += ", Taufe: %s" % place.get_title()

你可以写

dict_name['gebort'] = dict_name.get('gebort', '') + ", Taufe: %s" % place.get_title()

正如已经写过的,命名一些东西并不聪明,或者上面的代码是从 dict 派生的类吗?使用 .get 您可以定义在没有该名称的键的情况下返回的内容,在示例中为空字符串。

关于python - 在Python3中,以下情况如何编写异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30155725/

相关文章:

python - 如何制作一个新的数据框来存储原始数据框的列箱的平均值?

python - 如何将 sympy 方程组转化为矩阵形式

python - 在Python文本解析器中跳过行并将它们分成列

python - 在Python循环下访问迭代列表中的所有元素

Java NullPointerException - 我可以告诉空对象的类吗?

python - 在 Django/Jinja2 模板中将字典对象转换为字符串

获取图像数组时出现 java.lang.ArrayIndexOutOfBoundsException

php - 将 PHP 错误转换为异常

linux - 为什么异常处理程序要查找系统调用表?

exception - 阅读时的 mv()