2009-03-01 12 views
0

Kullanıcı tarafından oluşturulan hatalarla başa çıkmak için istisnaları kullanmak kabul edilebilir mi yoksa hassas mıdır? Mesela ...İstisnai kullanmayla ilgili durumlar, kullanıcı istisnaları tetikleyebilir mi?

try 
    { 
     $job->authorise($user); 
    } 
    catch (InsufficentCreditException $e) 
    { 
     return E_INSUFFICIENT_CREDIT; 
    } 
    catch (PermissionDeniedException $e) 
    { 
     return E_PERMISSION_DENIED; 
    } 

veya istisnalar (sıfıra, dosya gibi bulunamadı bölümü) sadece daha ciddi hatalar için ayrılmıştır?

cevap

6

Hatalı kullanıcı girişi hiçbir zaman bir istisna değildir. Bu norm!

Gerçekten de. İstisnalar istisnai durumlar içindir ve harici kaynaktan hatalı/yanlış veriler genellikle bir istisna değildir.

0

'InsufficentCreditException' yukarıdaki kullanım durumunuzu anladığım takdirde atmak için iyi bir neden olduğunu düşünüyorum. Programın tüm pozitif akışı yukarıdan aşağıya işlemek için yapılabilir, herhangi bir 'istisna' pozitif için bir başarısızlık ve dolayısıyla bir istisnadır.

Mitch, 'kötü kullanıcı girdisi hiçbir zaman bir istisna değildir' ve 'bir dış kaynaktan hatalı/yanlış veri genellikle bir istisna değildir' diyor, ancak 'sözleşmeyle program' adı altındaysanız, tam da bu doğrudur . Bir dış kaynaktan alınan geçersiz verilerden bir istisna atmak için daha iyi bir sebep ne olurdu?

Son bir not, sorunuz ve kullanım durumunuz eşleşmiyor. Yetersiz Kredi genellikle kullanıcı tarafından oluşturulan hatadan kaynaklanmaz. Açık bir neden/etki vakası bunu cevaplandırmayı daha kolaylaştıracaktır.

İlgili konular