Modern Python özel istisnalar bildirmek için doğru yolu?
Modern Python özel istisna sınıfları için doğru yolu nedir? Birincil amacım diğer istisna sınıfları ne olursa olsun takip etmek, o (örneğin) dışında ben de dahil herhangi bir ekstra dize durum yakalandı ne olursa olsun yazdırılır.
"Ben Python 2.5 çalışacak bir şey demek ama 'doğru' Python 2.6 ve 3.* Python için "modern Python tarafından şeyler yapmanın bir yolu. Ve "hatanın nedeni hakkında ek veri içeren bir özel Durum nesnesi yani: bir dize, belki de başka bir rasgele nesne durum. ilgili özel tarafından
Python 2.6.2 aşağıdaki uyarı admin tarafından takıldı.
>>> class MyError(Exception):
... def __init__(self, message):
... self.message = message
...
>>> MyError("foo")
_sandbox.py:3: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
BaseException
nitelikler message
adlı özel bir anlamı vardır ki deli gibi görünüyor. Öznitelik uzakta iptal etme için çalışıyorlar 2.5 özel bir anlamı var mıydı, adı (ve yalnız) şimdi yasak sanırım bu PEP-352 toplamak? Ugh.
Fuzzily Exception
sihirli bir parametre olduğunu biliyor args
, ama bunu kullanmak için nasıl bildim de geldim. Ne de ben doğru şeyler yapmak için ileriye dönük olduğundan emin değilim; ben online bulundu tartışmalardan uzak Python 3 argüman ile yapmaya çalıştıklarını ileri sürdü.
Güncelleme: geçersiz kılma önerilen iki cevap __init__
ve __str__
/__unicode__
/__repr__
. Bunu yazarak bir sürü gibi görünüyor, bu gerekli mi?
CEVAP
Belki de asıl soru, ama neden olmasın özledim:
class MyException(Exception):
pass
Düzenleme:bir şey (veya fazla argüman geçmek) geçersiz kılmak için, bunu yapmak için:
class ValidationError(Exception):
def __init__(self, message, errors):
# Call the base class constructor with the parameters it needs
super(ValidationError, self).__init__(message)
# Now for your custom code...
self.errors = errors
Bu şekilde ikinci param hata iletileri dict pas ve e.errors
ile daha sonra alabilirsin
Dosya için satır yazmak için doğru yol...
**Kullanmak için doğru yolu Python kwa...
'pip yüklemek için doğru yolu ne,...
javascript yöntemi özel durum yakalama...
Python fonksiyonları yorum yapmak için...