In particolare, esiste una sottoclasse standard Exception
utilizzata in queste circostanze?Qual è l'eccezione standard da lanciare in Java per operazioni non supportate/implementate?
risposta
java.lang.UnsupportedOperationException
gettato per indicare che l'operazione richiesta non è supportata.
ignorare questo ridicolo "questo fa parte del framework delle collezioni" è nel pacchetto 'java.lang', il JavaDoc afferma esplicitamente che questo è quello che serve. –
@JarrodRoberson OK, quella dichiarazione dovrebbe davvero essere rimossa dalla documentazione della classe in quel caso. L'eccezione sembra essere utilizzata da altri pacchetti. Immagino che se Oracle lo facesse, allora dovremmo farlo anche noi. Presenterò un bug report. –
se si vuole più granularità e meglio decription, è possibile utilizzare NotImplementedException da commons-lang
Attenzione: Disponibile prima le versioni 2.6 e dopo versioni 3.2, solo.
distinguere tra i due casi che si chiama:
per indicare che l'operazione richiesta non è supportata e molto probabilmente non lo sarà mai, lanciare un
UnsupportedOperationException
.per indicare l'operazione richiesta non è stata ancora attuata, scegliere tra questo:
Usare il
NotImplementedException
da apache commons-lang che era disponibile in commons-lang2 ed è stato ri-aggiunto commons-lang3 in versione 3.2.Implementare il proprio
NotImplementedException
.Lanciare un
UnsupportedOperationException
con un messaggio come "Non ancora implementato".
Vado con questo, perché mi sembra ragionevole. "Yet" o "never" indicati dall'eccezione danno un'idea su come reagire a questo. – sschrass
# 1 o 2 sono molto preferibili nella pratica.# 3 cattura la distinzione semantica tra "non supportato" e "non implementato", ma avere una classe separata rende più facile fare una ricerca rapida per verificare che non si sia dimenticato di implementare qualsiasi cosa si dovrebbe prima di impegnarsi. –
Se si crea una nuova funzione (non ancora implementato) in NetBeans, allora si genera un corpo del metodo con la seguente dichiarazione:
throw new java.lang.UnsupportedOperationException("Not supported yet.");
Pertanto, vi consiglio di utilizzare la UnsupportedOperationException .
- 1. Sono consentite le operazioni di iteratore standard da lanciare?
- 2. Qual è la libreria SOAP standard da utilizzare in Groovy?
- 3. È corretto lanciare eccezioni definite nella libreria standard C++?
- 4. Lanciare da lambda
- 5. Come lanciare BufferedImage in java
- 6. Qual è l'operatore & = per Java
- 7. È sicuro lanciare e attività da un thread non-ui?
- 8. Qual è il modo standard per rimuovere un elemento da un elenco in OCaml?
- 9. Qual è il modo più appropriato per riutilizzare l'attività Exec in gradle per le normali operazioni da riga di comando?
- 10. Qual è lo standard accettato per dettare le espressioni lambda?
- 11. È buona pratica lanciare l'eccezione all'interno dei setter in Java?
- 12. non può lanciare da Object a boolean
- 13. Qual è il colore blu Apple standard?
- 14. Qual è il posto standard defacto per le librerie D
- 15. Qual è l'equivalente java di AggregateException da .net?
- 16. Qual è il formato standard per le espressioni di assegnazione?
- 17. Perché non posso lanciare un'eccezione in un'espressione lambda Java 8?
- 18. Quale eccezione nulla da lanciare?
- 19. Qual è lo standard con oAuth per ricordare gli utenti?
- 20. Qual è lo spazio dei nomi 'Standard'?
- 21. Perché non è commons-lang nell'API standard java?
- 22. Operazioni pixel veloci Java
- 23. Come lanciare un'eccezione controllata da un thread java?
- 24. Qual è lo standard per la codifica delle immagini Docker?
- 25. Qual è il corrispondente WCF per java?
- 26. numpy.memmap da operazioni numpy
- 27. Qual è la convenzione standard per la creazione di un nuovo NSArray da un NSArray esistente?
- 28. Qual è il metodo standard per raggruppare le librerie dipendenti da OSGi?
- 29. Autenticazione modulo standard Servlet Java
- 30. quale eccezione da lanciare se la lista è vuota in java?
È appropriato utilizzare quando una classe non implementa un metodo, ma le classi figlio possono farlo? In altre parole, avere un metodo astratto in una classe non astratta. – osa
@SergeyOrshanskiy È utile quando, a seconda di come si costruisce un oggetto, è necessario creare una classe anonima che implementa un'interfaccia per creare un'istanza di una variabile membro, ma non si desidera che venga utilizzata. Se lo si imposta su 'null' e lo si utilizza accidentalmente (o qualcun altro lo fa) si otterrebbe' NullPointerExceptions' che in questo caso è meno ovvio di 'UnsupportedOperationExceptions'. Solo un esempio – 2rs2ts