Atma System.Exception
bu kadar kötü kabul edilirse , neden ilk etapta Exception
yapılmadı abstract
?
Bu şekilde aramak mümkün olmazdı:
throw new Exception("Error occurred.");
Bu, oluşan hata hakkında daha fazla ayrıntı sağlamak için türetilmiş istisnalar kullanılmasını zorunlu kılar.
Örneğin, bir kütüphane için özel bir istisna hiyerarşisi sağlamak istediğimde, istisnalarım için genellikle soyut bir temel sınıf bildiririm:
public abstract class CustomExceptionBase : Exception
{
/* some stuff here */
}
Ve sonra daha spesifik bir amaç için türetilen bir istisna:
public class DerivedCustomException : CustomExceptionBase
{
/* some more specific stuff here */
}
Daha sonra herhangi bir kütüphane yöntemini çağırırken, kütüphaneden gelen herhangi bir hatayı doğrudan yakalamak için bu genel try / catch bloğu olabilir:
try
{
/* library calls here */
}
catch (CustomExceptionBase ex)
{
/* exception handling */
}
Bu iyi bir uygulama mı?
Exception
Soyut yapılsaydı iyi olur mu?
EDIT: Burada benim bir istisna sınıfı işaretlenmiş olsa bile abstract
, yine de bir tümünü yakala blok yakalayabilirsiniz. Özetlemek, programcıların "süper geniş" bir istisna atmasını yasaklamanın bir yoludur. Genellikle, gönüllü olarak bir istisna attığınızda, bunun ne tür olduğunu ve neden olduğunu bilmelisiniz. Böylece daha özel bir istisna türü atmaya zorlamak.