Son ben Error kullanımdan kaldırıldı, kontrol etti. Ama burada o modül olmadan bunu yapacağını nasıl:
eval {
die "Oops!";
1;
} or do {
my $e = [email protected];
print("Something went wrong: $e\n");
};
Temelde, yerine throw
ait eval yerine try
, die kullanın ve [email protected]
yılında istisna arayın. eval blok sonunda gerçek değeri 5.14 daha eski, detaylar için P::C::P::ErrorHandling::RequireCheckingReturnValueOfEval bkz Perl sürümlerinde tekrar kullanılmadan önce istemeden değiştirmesini [email protected]
önlemek için bir deyim parçasıdır. Örneğin, bu kod bu kusurdan muzdarip.
# BAD, DO NOT USE WITH PERLS OLDER THAN 5.14
eval {
die "Oops!";
};
if (my $e = [email protected]) {
print("Something went wrong: $e\n");
}
# BAD, DO NOT USE WITH PERLS OLDER THAN 5.14
Ama başarısız olduğunda birçok Perl işlemleri istisnaları yükseltmeyin dikkat ; Sadece bir hata kodu döndürürler. Bu davranış, yerleşik ve standart modüller için autodie aracılığıyla değiştirilebilir. Eğer autodie
kullanıyorsanız, o zaman try/catch yapmanın standart yol (düz autodie perldoc dışında) şudur:
use feature qw(switch);
eval {
use autodie;
open(my $fh, '<', $some_file);
my @records = <$fh>;
# Do things with @records...
close($fh);
};
given ([email protected]) {
when (undef) { say "No error"; }
when ('open') { say "Error from open"; }
when (':io') { say "Non-open, IO error."; }
when (':all') { say "All other autodie errors." }
default { say "Not an autodie error at all." }
}
bir stacktrace almak için, Carp bak.
Bu uyarıyı günlüklere nasıl yüklerim? – pitchblack408
İstisnalar oluşturabilir miyim? – pitchblack408
Ne sorduğundan emin değilim. Günlük dosyalarına giriş yaparak bunları günlüğe kaydedersiniz ve “die” veya “croak” kullanarak istisnalar yaratırsınız. İstisna nesneleri vb. Nasıl arayacağınızı mı soruyorsunuz? Bu ayrı bir soru olurdu. –