我需要修改一個我想用於我的族譜項目的Python代碼(由程序員給出)。我對Python非常陌生,並開始閱讀代碼。但是,我不知道如何解決以下問題。如何在Python3的下列情況下編寫一個異常?
我執行代碼時收到以下錯誤信息:
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()
現在,我不知道什麼時候就沒有出生日期添加一個異常處理/場所內被發現,這樣的代碼不會給任何出生值。有人能夠指出我正確的方向嗎?
你是否研究過Python *中的異常處理?* – jonrsharpe
看看https://docs.python.org/3.4/tutorial/errors.html – Joost
我不認爲你需要這樣做,如果它只是一個字典關鍵錯誤。你可以用'dict.get'或'dict.setdefault'做一些事情。另外,我不會在Python中爲我的變量命名爲「self」,除非它是實例方法的第一個參數,「self」通常用於引用封閉對象實例。 – Shashank