Ben pebble-remote projesini geliştirirken bu hata yakalama kısmında şöyle bir sorunla karşılaşmıştım. Kullanıcı tanımlı hata sınıflarım vardı ve bu sınıfların tanımlandığı dosyanın dışında bir yerde bu tanımlanan hataları yakalamak istiyordum. Hatanın tanımlandığı python dosyasını da import ettiğim halde bu hataları yakalayamıyordum.
Daha iyi bir yöntemi de olabilir elbet ama benim deneyerek bulduğum çözüm hata sınıfının tam yolunu yazmak oldu.
Kullanmaya çalıştığım python modülünün yapısı aşağıda:
libpebble/pebble
├── __init__.py
├── LightBluePebble.py
├── pebble.py
└── stm32_crc.py
LightBluePebble.py dosyası içinde bir hata aşağıdaki gibi tanımlanmış:
LightBluePebbleError(Exception): def __init__(self, id, message): self._id = id self._message = message def __str__(self): return "%s ID:(%s) on LightBlue API" % (self._message, self._id)
Bu hatayı yakalamak istediğim dosya içinde içinde modülü aşağıda şekilde import ettim:
import pebble as libpebble
Bu haliyle aşağıdaki kod hatalıydı:
try: ... except LightBluePebbleError as e ...
Doğrusu:
LightBluePebbleError = libpebble.LightBluePebble.LightBluePebbleError try: ... except LightBluePebbleError as e ...
Hiç yorum yok:
Yorum Gönder