2009-02-02 15 views
11

Son zamanlarda "Object Oriented Exception Handling in Perl" Perl.com yazısını okudum. Perl'deki istisnaları kullanmanın bir anlamı var mı?Perl değerinde nesne yönelimli istisna işleme değer mi?

+1

Açıklamaları kullanın veya nesne yönelimli istisnaları kullanın? – innaM

+0

normal istisna var mı? ya da uyarmak ve ölmek demek? OO'lardan bahsediyorum/ – mandel

+0

Makaleyi işaretlediğiniz için teşekkürler - oveload modülü hakkında bilgi edindim :) – Arkadiy

cevap

18

Sana başvurulan makale eski olduğuna dikkat etmelidir ve artık yerine ilginç ve kırılma eğilimi gösterir Error.pm ait Exception::Class kullanması gerektiğini (ben "kara Magick" diyoruz). Ben şimdi Error.pm sürdürücü olduğumu belirtmeliyim, ama artık tavsiye etmiyorum veya kendi kodum için kullanıyorum.

+2

Size bir ödül vermek istiyorum [Disiplinli rozeti] (http://stackoverflow.com/help/badges/37/disciplined) başkalarının kendi modülünüzü kullanmamasını tavsiye etmek için. –

+1

Bağlantı bozuk. [Exception :: Class] olmalıdır (https://metacpan.org/pod/Exception::Class). – patszim

+0

Teşekkürler @patszim! Metacpan.org'u işaret etmek için güncelledim. –

12

"Perl'deki istisnaları kullanmak için bir nokta var mı?"

Evet, ben çok Damian Conway tarafından Perl Best Practices yılında bölüm "Hata İşleme" okumanızı öneririz.

Kesinlikle gözlerimi açtım ;-)

7

Kesinlikle. Basit bir 'die' atıyorsanız, gerçekten bilgisayarının işleyebileceği hakkında daha fazla bilginiz yok. Örneğin, Test :: Most kullanan bir test çerçevem ​​var ve bu modül test hatalarında ölmenize izin verebilir. Ancak, çerçevemde bir test başarısız olduğu veya kodun öldüğü için ölmekte olup olmadığımı bilmem gerekiyordu. Böylece, bir Test :: Most :: Exception attı ve çerçevem ​​istisna tipini kontrol edebilir ve uygun eylemi yapabilir.

İstisnalar istisnalar farklı şekillerde farklı hata türlerine başa izin verebilir, arkadaşınız :) herhangi bir programlama dilinde

3

bulunmaktadır. Bu, test sırasında ince taneli hataların kaydını tutmak ve programınızdaki geri kazanılabilir hataları akıllıca ele almak için gerçekten yararlı olabilir. Yazdığınız her fırlatma programı için buna değer değil, ama geliştirmek için çok zaman harcadığınız şeyler için çabaya değer olabilir.