NotImplementedException
Java .NET gibi bir şey var mı ?
NotImplementedException
Java .NET gibi bir şey var mı ?
Yanıtlar:
Commons Lang'da var. Ya da atabilirsin UnsupportedOperationException
.
Bence java.lang.UnsupportedOperationException
aradığınız şey bu.
new UnsupportedOperationException("Not implemented yet")
- mutlu mu?
Bunu kendiniz yapabilirsiniz (yaptığım şey) - istisna işleme ile uğraşmamak için, sadece RuntimeException'ı genişletirsiniz, sınıfınız şöyle görünebilir:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
Bir mesaj alacak şekilde genişletebilirsiniz - ancak yöntemi benim yaptığım gibi kullanırsanız (yani, hatırlatma olarak, hala uygulanacak bir şey olduğunu), genellikle ek mesajlara gerek yoktur.
Sadece bu yöntemi kullandığımı söylemeye cesaret ediyorum, bir sistem geliştirme sürecindeyken hangi yöntemlerin hala doğru bir şekilde uygulanmadığını izlememi kolaylaştırıyor :)
UnsupportedOperationException
bence kullanmaktan daha iyidir . Şimdi, sadece Java bunu özel istisna kütüphanesine ekleseydi!
Belirtildiği gibi, JDK'nın yakın bir eşleşmesi yoktur. Ancak, ekibimin zaman zaman böyle bir istisna için de kullanımı vardır. UnsupportedOperationException
Diğer yanıtlar tarafından önerildiği gibi gidebilirdik , ancak temel kitaplığımızda kurucuları kaldırmış özel bir istisna sınıfını tercih ediyoruz:
public class NotYetImplementedException extends RuntimeException
{
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException()
{
}
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException(String message)
{
super(message);
}
}
Bu yaklaşımın aşağıdaki faydaları vardır:
NotYetImplementedException
gördüklerinde, bir uygulamanın planlandığını ve unutulduğunu veya hala devam ettiğini bilirler, oysa UnsupportedOperationException
( toplama sözleşmeleri doğrultusunda ) hiçbir şeyin uygulanmayacağını söyler. Bu yüzden sınıf adında "henüz" kelimesi var. Ayrıca, bir IDE çağrı sitelerini kolayca listeleyebilir.import
hatta değil, uygulanması gereken yöntemin içinde bir kullanımdan kaldırma uyarısı alırsınız (JDK 9 bunu düzeltti ).Hayır yok ve muhtemelen yok, çünkü bunun için çok az geçerli kullanım var. Kullanmadan önce iki kez düşünürdüm. Ayrıca, kendinizi yaratmak gerçekten kolaydır.
Lütfen neden .NET'te bile olduğu hakkında bu tartışmaya bakın .
UnsupportedOperationException
Operasyonun henüz uygulanmadığını, hatta desteklenmediğini söylese de sanırım yaklaşıyor. Bu, geçerli bir uygulamanın mümkün olmadığı anlamına gelebilir. Operasyon neden desteklenmiyor? Orada olmalı mı? Arayüz ayrımı veya Liskov ikame sorunları belki?
Devam etmekte olan bir çalışma için gidersem ToBeImplementedException
, ama kendimi hiçbir zaman somut bir yöntem tanımlarken yakalayamadım ve bunu o kadar uzun süre üretime bıraktım ve böyle bir istisnaya ihtiyaç olacaktı.