Tampaknya NotImplementedException telah dihapus dari Commons Lang 3.0.
Michael Younkin
13
Saya pikir karena UnsupportedOperationException adalah bagian dari kerangka kerja koleksi, itu hanya boleh digunakan jika digunakan dalam konteks Koleksi. Kalau tidak, RuntimeException harus digunakan. docs.oracle.com/javase/7/docs/technotes/guides/collections/…
Saya mengatakan itu adalah sesuatu yang sangat berbeda. NIE juga mengatakan itu mungkin belum diimplementasikan, di mana UOE mengatakan saya tidak akan pernah ...
Dykam
5
@Dykam, lalu bukankah itu NotImplementedYetException?
Yishai
106
@Dykam: new UnsupportedOperationException("Not implemented yet")- bahagia?
Michael Borgwardt
3
Saya tidak bermaksud itu lebih buruk, hanya memiliki use case yang berbeda.
Dykam
6
UnsupportedOperationException baru ("Belum diimplementasikan") adalah ide yang luar biasa! :) di lang3 untuk beberapa alasan saya tidak memiliki NotImplementedException jadi ini adalah solusi yang bagus
ufk
55
Anda bisa melakukannya sendiri (itulah yang saya lakukan) - agar tidak terganggu dengan penanganan pengecualian, Anda cukup memperpanjang RuntimeException, kelas Anda bisa terlihat seperti ini:
Anda dapat memperluasnya untuk menerima pesan - tetapi jika Anda menggunakan metode ini seperti yang saya lakukan (yaitu, sebagai pengingat, bahwa masih ada sesuatu yang harus diimplementasikan), maka biasanya tidak perlu ada pesan tambahan.
Saya berani mengatakan, bahwa saya hanya menggunakan metode ini, sementara saya sedang dalam proses mengembangkan sistem, membuatnya lebih mudah bagi saya untuk tidak kehilangan jejak metode mana yang masih belum diterapkan dengan benar :)
Saya suka solusi ini yang terbaik karena mudah untuk memiliki penangan kesalahan khusus untuk itu, mudah untuk mencarinya dengan menemukan semua referensi ke konstruktor NotImplementedException, dan itu hanya beberapa baris kode. Tetapi agak merepotkan harus mendeklarasikan kelas baru dengan file sendiri.
D Coetzee
1
Saya setuju. Ini lebih baik daripada penggunaan UnsupportedOperationExceptionmenurut saya. Sekarang, andai saja Java akan menambahkan ini ke perpustakaan umum pengecualian!
naksir
12
Seperti yang disebutkan, JDK tidak memiliki kecocokan dekat. Namun, tim saya terkadang juga menggunakan pengecualian seperti itu. Kami dapat mengikuti UnsupportedOperationExceptionseperti yang disarankan oleh jawaban lain, tetapi kami lebih memilih kelas pengecualian khusus di pustaka dasar kami yang telah mencabut konstruktor:
publicclassNotYetImplementedExceptionextendsRuntimeException{/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/@DeprecatedpublicNotYetImplementedException(){}/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/@DeprecatedpublicNotYetImplementedException(String message){super(message);}}
Pendekatan ini memiliki manfaat sebagai berikut:
Ketika pembaca melihat NotYetImplementedException, mereka tahu bahwa suatu implementasi telah direncanakan dan telah dilupakan atau masih dalam proses, sedangkan UnsupportedOperationExceptionmengatakan (sesuai dengan kontrak penagihan ) bahwa sesuatu tidak akan pernah dilaksanakan. Itu sebabnya kami memiliki kata "yet" dalam nama kelas. Juga, sebuah IDE dapat dengan mudah mendaftar situs panggilan.
Dengan peringatan penghentian di setiap situs panggilan, IDE dan alat analisis kode statis Anda dapat mengingatkan Anda di mana Anda masih harus mengimplementasikan sesuatu. (Penggunaan penghentian ini mungkin terasa salah bagi sebagian orang, tetapi pada kenyataannya penghentian tidak terbatas pada mengumumkan penghapusan .)
Konstruktor sudah usang, bukan kelas. Dengan cara ini, Anda hanya mendapatkan peringatan penghentian di dalam metode yang perlu diimplementasikan, bukan di importjalur (JDK 9 memperbaiki ini , meskipun).
Tidak ada dan itu mungkin tidak ada, karena ada sangat sedikit kegunaan yang valid untuk itu. Saya akan berpikir dua kali sebelum menggunakannya. Juga, memang mudah untuk membuat diri sendiri.
Silakan merujuk ke diskusi ini tentang mengapa itu bahkan di .NET.
Saya kira UnsupportedOperationExceptionsudah dekat, meskipun tidak mengatakan operasi tidak diimplementasikan, tetapi bahkan tidak didukung. Itu bisa berarti implementasi yang valid tidak mungkin dilakukan. Mengapa operasi tidak didukung? Haruskah itu ada di sana? Segregasi antarmuka atau masalah substitusi Liskov mungkin?
Jika ini sedang dalam proses, saya akan melakukannya ToBeImplementedException, tetapi saya tidak pernah menemukan diri saya mendefinisikan metode konkret dan kemudian membiarkannya begitu lama sehingga membuatnya menjadi produksi dan akan ada kebutuhan untuk pengecualian seperti itu.
Saya pikir
java.lang.UnsupportedOperationException
apa yang Anda cari.sumber
new UnsupportedOperationException("Not implemented yet")
- bahagia?Anda bisa melakukannya sendiri (itulah yang saya lakukan) - agar tidak terganggu dengan penanganan pengecualian, Anda cukup memperpanjang RuntimeException, kelas Anda bisa terlihat seperti ini:
Anda dapat memperluasnya untuk menerima pesan - tetapi jika Anda menggunakan metode ini seperti yang saya lakukan (yaitu, sebagai pengingat, bahwa masih ada sesuatu yang harus diimplementasikan), maka biasanya tidak perlu ada pesan tambahan.
Saya berani mengatakan, bahwa saya hanya menggunakan metode ini, sementara saya sedang dalam proses mengembangkan sistem, membuatnya lebih mudah bagi saya untuk tidak kehilangan jejak metode mana yang masih belum diterapkan dengan benar :)
sumber
UnsupportedOperationException
menurut saya. Sekarang, andai saja Java akan menambahkan ini ke perpustakaan umum pengecualian!Seperti yang disebutkan, JDK tidak memiliki kecocokan dekat. Namun, tim saya terkadang juga menggunakan pengecualian seperti itu. Kami dapat mengikuti
UnsupportedOperationException
seperti yang disarankan oleh jawaban lain, tetapi kami lebih memilih kelas pengecualian khusus di pustaka dasar kami yang telah mencabut konstruktor:Pendekatan ini memiliki manfaat sebagai berikut:
NotYetImplementedException
, mereka tahu bahwa suatu implementasi telah direncanakan dan telah dilupakan atau masih dalam proses, sedangkanUnsupportedOperationException
mengatakan (sesuai dengan kontrak penagihan ) bahwa sesuatu tidak akan pernah dilaksanakan. Itu sebabnya kami memiliki kata "yet" dalam nama kelas. Juga, sebuah IDE dapat dengan mudah mendaftar situs panggilan.import
jalur (JDK 9 memperbaiki ini , meskipun).sumber
Tidak ada dan itu mungkin tidak ada, karena ada sangat sedikit kegunaan yang valid untuk itu. Saya akan berpikir dua kali sebelum menggunakannya. Juga, memang mudah untuk membuat diri sendiri.
Silakan merujuk ke diskusi ini tentang mengapa itu bahkan di .NET.
Saya kira
UnsupportedOperationException
sudah dekat, meskipun tidak mengatakan operasi tidak diimplementasikan, tetapi bahkan tidak didukung. Itu bisa berarti implementasi yang valid tidak mungkin dilakukan. Mengapa operasi tidak didukung? Haruskah itu ada di sana? Segregasi antarmuka atau masalah substitusi Liskov mungkin?Jika ini sedang dalam proses, saya akan melakukannya
ToBeImplementedException
, tetapi saya tidak pernah menemukan diri saya mendefinisikan metode konkret dan kemudian membiarkannya begitu lama sehingga membuatnya menjadi produksi dan akan ada kebutuhan untuk pengecualian seperti itu.sumber