//Try catch arasındaki fark atmak ve/(e)/e try at
Ne arasındaki farktır
try { }
catch
{ throw; }
ve
try { }
catch(Exception e)
{ throw e;}
?
Ve ne zaman birini ya da diğerini mi kullanmalıyım?
CEVAP
Bu yapılar
try { ... }
catch () { ... } /* You can even omit the () here */
try { ... }
catch (Exception e) { ... }
her iki yakalayacak içinde benzerheristisna try
bloğun içine atılan (ve sadece bu özel durumlar oturum açmak için kullandığınız sürece, olmalıdırkaçınılmalıdır). Bak bu şimdi:
try { ... }
catch ()
{
/* ... */
throw;
}
try { ... }
catch (Exception e)
{
/* ... */
throw;
}
try { ... }
catch (Exception e)
{
/* ... */
throw e;
}
Birinci ve ikinci deneyin-catch TAM olarak aynı şey blok, onlar sadece yeniden oluşturma mevcut durum ve özel durum devam edecektir "kaynak" ve yığın izleme.
Üçüncü blok farklıdır try-catch. Ne zaman atar hariç, değiştirecek kaynak ve yığın izleme, ki görünen durum olmuştur atılan bu yöntem, çok çizgi throw e
yöntemi içeren bu try-catch bloğu.
Hangisini kullanmalıyım? Gerçekten her durumda bağlıdır.
Hadi bir veritabanına devam edeceği .Save()
bir yöntem ile Person
bir sınıf olduğunu varsayalım. Hadi uygulamanız bir yere Person.Save()
yöntem yürüten söylüyorlar. Eğer DB Kişiyi kurtarmak için reddederse, o zaman .Save()
bir özel durum oluşturur. Bu durumda throw
throw e
kullanmalısınız? Yani, duruma göre değişir.
Ben tercih ne yapıyor:
try {
/* ... */
person.Save();
}
catch(DBException e) {
throw new InvalidPersonException(
"The person has an invalid state and could not be saved!",
e);
}
Bu "" atmak olmaktan daha özel. İç özel Durum olarak DBException koymak gerekir Ne zaman inceleyin bu İnvalidPersonException, yığın izleme içerir bilgi geri Kaydet yöntemi (olabilir yeterli seni çözmek için sorun), ama hala erişim için orijinal durum eğer ihtiyacın olursa.
Ne zaman son bir söz olarakbekliyorbir istisna, gerçekten eğer tercih etmelisiniz bir İnvalidPersonException bekliyor iseniz, belirli bir durum ve ** 20, genel bir ıe..
try { ... }
catch (InvalidPersonException e) { ... }
için
try { ... }
catch (Exception e) { ... }
İyi şanslar!
javascript yeni Hata ve at(nesne)atmak...
Arasındaki fark try-catch işlevi için ...
C 03 arasındaki fark atmak() 11 noexce...
ve yeni bir özel Durum atmak arasındak...
Arasındaki fark "ve" ve && R...