সমর্থিত / প্রয়োগ না করা ক্রিয়াকলাপগুলির জন্য জাভা নিক্ষেপ করার স্ট্যান্ডার্ড ব্যতিক্রম কী?


308

বিশেষত, Exceptionএই পরিস্থিতিতে কোনও স্ট্যান্ডার্ড সাবক্লাস ব্যবহার করা হয়?


যখন কোনও ক্লাস কোনও পদ্ধতি প্রয়োগ না করে তবে কী উপযুক্ত ব্যবহার করা উপযুক্ত? অন্য কথায়, একটি অ-বিমূর্ত শ্রেণিতে একটি বিমূর্ত পদ্ধতি থাকতে হবে have
oca

@ সের্গেআরশানস্কি এটি কখন কার্যকর হবে আপনি কীভাবে কোনও অবজেক্ট তৈরি করেন তার উপর নির্ভর করে আপনাকে একটি বেনাম শ্রেণি তৈরি করতে হবে যা কোনও সদস্যের পরিবর্তনশীলকে ইনস্ট্যান্ট করার জন্য একটি ইন্টারফেস প্রয়োগ করে, তবে আপনি এটি ব্যবহার করতে চান না। যদি আপনি এটি সেট করে থাকেন nullএবং আপনি দুর্ঘটনাক্রমে এটি ব্যবহার করেছেন (বা অন্য কেউ করেছে) আপনি পেয়ে NullPointerExceptionsযা যা UnsupportedOperationExceptionsএই ক্ষেত্রেটির চেয়ে কম সুস্পষ্ট । শুধু একটি উদাহরণ।
2rs2ts

উত্তর:


438

java.lang.UnsupportedOperationException

অনুরোধ করা অপারেশনটি সমর্থিত নয় তা বোঝাতে ছুড়ে দেওয়া হয়েছিল।


4
@ জারোদরবারসন ঠিক আছে, সেই বিবৃতিটি সত্যই সেই ক্ষেত্রে শ্রেণীর ডকুমেন্টেশন থেকে সরানো উচিত। ব্যতিক্রমগুলি অন্য প্যাকেজগুলি ব্যবহার করে বলে মনে হচ্ছে। আমার ধারণা, ওরাকল যদি এটি করে তবে আমাদেরও উচিত। আমি একটি বাগ রিপোর্ট ফাইল করব।
মার্টেন বোদেউইস

1
সচেতন এই একটি হতে অবারিত RuntimeException । সংকলনের সময় এই ব্যতিক্রমগুলি পরিচালনা করতে আপনি কোনও প্রতিক্রিয়া বা সহায়তা পাবেন না। এটি যদি স্ট্যাবড পদ্ধতি বা ওয়ার্ক-ইন-প্রগ্রেসের জন্য ব্যবহার করা হয় তবে আপনার এক ধরণের পরীক্ষিত ব্যতিক্রম ব্যবহার করা উচিত ।
টেস্টিওয়েট

221

আপনি যে দুটি মামলার নাম দিয়েছেন তার মধ্যে পার্থক্য করুন:

  • অনুরোধ করা অপারেশনটি সমর্থিত নয় এবং সম্ভবত কখনই তা করবে না তা বোঝাতে, একটি নিক্ষেপ করুন UnsupportedOperationException

  • অনুরোধ করা অপারেশনটি এখনও কার্যকর করা হয়নি তা বোঝাতে, এর মধ্যে চয়ন করুন:

    1. অ্যাপাচি কমন্স-ল্যাংNotImplementedException থেকে ব্যবহার করুন যা কমন্স-ল্যাং 2 এ উপলব্ধ ছিল এবং সংস্করণ 3.2-তে কমন্স-ল্যাঙ্গ 3 এ পুনরায় যুক্ত করা হয়েছে।

    2. নিজের প্রয়োগ করুন NotImplementedException

    3. UnsupportedOperationException"প্রয়োগ করা হয়নি, এখনও" এর মতো বার্তা দিয়ে একটি নিক্ষেপ করুন ।


1
আমি এটি নিয়ে যাচ্ছি, কারণ এটি আমার কাছে যুক্তিসঙ্গত বলে মনে হয়। ব্যতিক্রম ব্যতীত নির্দেশিত "তবুও" বা "কখনই না" কীভাবে এই বিষয়ে প্রতিক্রিয়া জানাতে পারে তার একটি ধারণা দেয়।
sschras

3
# 1 বা 2 টি অনুশীলনে অনেক বেশি পছন্দনীয়। # 3 "সমর্থিত নয়" এবং "প্রয়োগ করা হয়নি" এর মধ্যে অর্থগত পার্থক্যটি ক্যাপচার করে, তবে পৃথক শ্রেণিভুক্ত হওয়া আপনাকে যা করার আগে আপনার যা কিছু করা উচিত তা বাস্তবায়ন করতে ভোলেন নি তা যাচাই করার জন্য দ্রুত অনুসন্ধান করা সহজ করে তোলে।
সান ইউ

4
# 3 বাস্তবায়িত না হওয়া পদ্ধতির জন্য সেরা কারণ এটি তৃতীয় পক্ষের লাইব্রেরি বা অতিরিক্ত কাজের প্রয়োজন হয় না, যদিও এটি কমন্স-ল্যাং হয়।
জোশডিএম

28

আপনি একটি নতুন (এখনও বাস্তবায়িত হয় নি) ফাংশন তৈরি করেন NetBeans , তাহলে এটি নিম্নোক্ত বিবৃতি সঙ্গে একটি পদ্ধতি শরীর উত্পন্ন:

throw new java.lang.UnsupportedOperationException("Not supported yet.");

অতএব, আমি অসমর্থিত অপারেশন এক্সসেপশনটি ব্যবহার করার পরামর্শ দিই ।


14

আপনি যদি আরও গ্রানুলারিটি এবং আরও ভাল ডিক্রিপশন চান, আপনি এর থেকে নোটইম্প্লেমেন্টেড এক্সেক্সশন ব্যবহার করতে পারেন কমন্স-ল্যাং -

সতর্কতা: কেবলমাত্র 2.6 সংস্করণ এবং 3.2 সংস্করণের পরে উপলব্ধ after

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.