Чи є щось подібне .NET NotImplementedException
на Java?
Чи є щось подібне .NET NotImplementedException
на Java?
Відповіді:
Commons Lang має. Або ви могли кинути UnsupportedOperationException
.
Я думаю, що java.lang.UnsupportedOperationException
саме ти шукаєш.
new UnsupportedOperationException("Not implemented yet")
- щасливий?
Ви можете зробити це самостійно (ось що я і зробив) - щоб не турбуватися обробкою винятків, ви просто розширите RuntimeException, ваш клас може виглядати приблизно так:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
Ви можете розширити його, щоб прийняти повідомлення - але якщо ви використовуєте метод як я (тобто як нагадування про те, що ще потрібно щось реалізувати), зазвичай додаткові повідомлення не потребують.
Смію сказати, що я використовую лише цей метод, поки я перебуваю в процесі розробки системи, полегшує мені, щоб не прослідкувати, які методи досі не застосовуються належним чином :)
UnsupportedOperationException
на мою думку. Тепер, якби тільки Java додала б це до загальної бібліотеки винятків!
Як вже було сказано, JDK не має близької відповідності. Однак час від часу моя команда використовує і такий виняток. Ми могли б піти з тим, UnsupportedOperationException
як пропонують інші відповіді, але ми віддаємо перевагу користувальницькому класу виключень у нашій базовій бібліотеці, який має застарілі конструктори:
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);
}
}
Цей підхід має такі переваги:
NotYetImplementedException
, вони знають, що реалізація була запланована і була або забута, або все ще триває, тоді як UnsupportedOperationException
каже (відповідно до договорів про збір ), що щось ніколи не буде здійснено. Ось чому в назви класу є слово "ще". Також IDE може легко перераховувати сайти для викликів.import
рядку ( хоча JDK 9 це виправлено ).Ні, немає, і, мабуть, його немає, тому що існує дуже мало дійсних застосувань для цього. Я б подумав двічі, перш ніж використовувати його. Також створити себе справді просто.
Будь ласка, зверніться до цієї дискусії про те, чому це навіть у .NET.
Я думаю, що UnsupportedOperationException
наближається, хоча це не говорить, що операція просто не реалізована, але навіть не підтримується. Це може означати, що неможлива реальна реалізація. Чому операція не підтримується? Чи повинен він навіть бути там? Можливо, питання поділу інтерфейсу чи заміни Ліскова?
Якщо це буде робота, яку я б продовжував ToBeImplementedException
, але я ніколи не змушував себе визначати конкретний метод, а потім залишати його так довго, щоб він перетворився на виробництво, і був би необхідність у такому винятку.