2015-02-14 15 views
6

Bir işlevde, a ve b değişkenlerinin aynı uzunluğa sahip olduğundan emin olmak istiyorum. Uyulmadığı takdirde bunun için bir İstisna yükseltmek istiyorum. ValueError'un bir argümanın kendisinin belirli kriterleri karşılamadığı istisna olduğunu biliyorum. ValueError, bu durumda argümanların arasında kriterin bulunduğu durumlarda uygun bir hata mıdır? Değilse, herhangi bir standart Python istisnası daha uygun mu? Gary yorumların işaret ettiği gibiValueError, kullanıcı aynı uzunluktaki farklı uzunluklardan argümanları geçerse yükseltmek için uygun bir istisna mıdır?

def func(a, b): 
    if len(a) != len(b): 
     raise ValueError("list a and list b must have the same length") 
+0

sadece listeleri –

+3

Evet, ValueError' uygun seçimdir 'söyleyebilirim aynı uzunlukta olması gerektiğini belirten döndürebilir; mevcut uygulamanız iyi. – jonrsharpe

+0

Ve 'assert'/'AssertionError' kullanma önerisinde bulunanlar için lütfen http://stackoverflow.com/questions/944592/best-practice-for-python-assert adresine bakın –

cevap

2

, ValueError uygun bir seçimdir. Wikiii122 tarafından önerildiği gibi başka bir rakip ise IndexError olacaktır. Bir dizi aralık dışında olduğunda, ancak Python dokümanlar göre

exception IndexError

Yükseltilmiş. (Dilim endeksleri izin verilen aralığın içinde düşmeye sessizce kesiliyor; bir dizin TypeError yükseltilir, düz tamsayı değilse.) Bir yükseltmek uğraşmadı eğer

Bu büyük olasılıkla zaten ne zam yapılacak olup kimin documention TypeError aşağıdaki gibidir şekilde istisna, ama açıklayıcı değil: yerleşik bir operasyon ya da fonksiyon sağ tip ama uygunsuz değer olan bir argüman aldığında Yükseltilmiş

exception ValueError

, ve durum hayır IndexError gibi daha kesin bir istisna ile açıklanamaz.

+0

Bunu mu demek istediniz: ValueError TypeError yazdınız mı? – rudolfbyker

İlgili konular