SORU
28 NİSAN 2012, CUMARTESİ


Deneyin::hala istisna 5.14 ya da geç Perl?işleme önerilen Minik

Perl topluluğun görüş birliği Try::Tiny özel durumlar işlemek için tercih edilen bir yol gibi görünüyor.

Perl 5.14 kullandığım sürüm) 21* *Try::Tiny adresleri eval issues. Try::Tiny hala bana herhangi bir yarar sağlayacak?

CEVAP
28 NİSAN 2012, CUMARTESİ


Her zaman kişisel bir tercih meselesi. Tercih edersiniz

my $rv;
if (!eval { $rv = f(); 1 } ) {
   ...
}

ya

my $rv = try {
   f();
} catch {
   ...
};

Ama ikincisi anon subs kullanır unutmayın return gibi next ve benzeri karışıyor. ::Dene-yakala Minik iyi iletişim kanalları eklediğinizde çok daha karmaşık catch bloğu ve dışı arasında sonunda olabilir.

En iyi durumda (basit) istisna üzerinde dönen $rv özel durum yok her zaman doğru olduğu için senaryo. Aşağıdaki gibi görünecektir:

my $rv;
if ($rv = eval { f() }) {
   ...
   return;
}

vs

my $rv = try {
   f();
} catch {
   ...
};

if (!$rv) {
   return;
}

Try::Tiny yerine TryCatch ben böyle bir modül kullanmak istiyorum.

Perl için değişim sadece if ($@) tekrar yapmak anlamına gelir. Diğer bir deyişle,

my $rv;
if (!eval { $rv = f(); 1 } ) {
   ...
}

yazılabilir

my $rv = eval { f() };
if ($@) {
   ...
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • RocketJump

    RocketJump

    22 ŞUBAT 2006
  • The Onion

    The Onion

    14 Mart 2006
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007