throws Exception
ঘোষণা পদ্ধতি অপেক্ষিত কিন্তু অনিবার্য কারণে একটি ব্যতিক্রম ফেলে দিতে পারে সম্পর্কে অবগত থাকার একটি স্বয়ংক্রিয় উপায়। ঘোষণা সাধারণত টাইপ বা ব্যতিক্রম যে যেমন নিক্ষিপ্ত করা যেতে পারে সে বিষয়ে সুনির্দিষ্ট throws IOException
বা throws IOException, MyException
।
আমাদের সকলের বা শেষ পর্যন্ত এমন কোড লেখা থাকবে যা অপ্রত্যাশিতভাবে বন্ধ হয়ে যায় এবং প্রোগ্রামটি চালানোর আগে আমরা অনুমান করি না এমন কোনও কারণে ব্যতিক্রমের প্রতিবেদন করে, যেমন শূন্য বা সূচকের বাইরে সীমা ছাড়াই বিভাগ। যেহেতু ত্রুটিগুলি পদ্ধতিটির দ্বারা প্রত্যাশিত ছিল না, তাই তারা "ধরা" না পারায় এবং চেষ্টা করার ধরণের সাহায্যে পরিচালনা করতে পারেন। পদ্ধতির অনর্থক ব্যবহারকারীরাও এই সম্ভাবনাটি জানেন না এবং তাদের প্রোগ্রামগুলিও বন্ধ হয়ে যাবে।
প্রোগ্রামার যখন নির্দিষ্ট কিছু ত্রুটি দেখা দিতে পারে তবে পদ্ধতির বাইরেও এই ব্যতিক্রমগুলি পরিচালনা করতে চাইলে পদ্ধতিটি কল করার পদ্ধতিতে এক বা একাধিক ধরনের ব্যতিক্রমগুলি হ্যান্ডেল করার পরিবর্তে "নিক্ষেপ" করতে পারে। যদি প্রোগ্রামার ঘোষণা না করে যে পদ্ধতিটি (সম্ভবত) একটি ব্যতিক্রম ছুঁড়ে ফেলেছে (বা জাভা এটির ঘোষণা করার ক্ষমতা না রাখে), সংকলকটি জানতে পারে না এবং এটি পদ্ধতিটির ভবিষ্যতের ব্যবহারকারীর সম্পর্কে জানতে হবে, পদ্ধতিটি ছুঁড়ে ফেলতে পারে এমন কোনও ব্যতিক্রম ধরা ও পরিচালনা করতে পারে। যেহেতু প্রোগ্রামগুলিতে অনেকগুলি বিভিন্ন প্রোগ্রাম দ্বারা লিখিত পদ্ধতিগুলির অনেক স্তর থাকতে পারে, কোন পদ্ধতিগুলি ব্যতিক্রমগুলি ছুঁড়ে ফেলতে পারে তার ট্র্যাক রাখা শক্ত (অসম্ভব) হয়ে যায়।
যদিও জাভা ব্যতিক্রমগুলি ঘোষণা করার ক্ষমতা রাখে, আপনি এখনও অযথিত এবং অঘোষিত ব্যতিক্রমগুলি সহ একটি নতুন পদ্ধতি লিখতে পারেন এবং জাভা এটি সংকলন করবে এবং আপনি এটি চালাতে পারেন এবং সেরাের জন্য আশা করতে পারেন। জাভা আপনাকে যা করতে দেয় তা আপনার নতুন পদ্ধতিটি সংকলন করতে দেয় না যদি এটি এমন কোনও পদ্ধতি ব্যবহার করে যা নিক্ষেপ ব্যতিক্রম (গুলি) হিসাবে ঘোষণা করা হয়, যদি না আপনি হয় নিজের পদ্ধতিতে ঘোষিত ব্যতিক্রম (গুলি) পরিচালনা করেন বা আপনার পদ্ধতিটিকে একইভাবে ছুঁড়ে মারার ঘোষণা না দেন ব্যতিক্রম (গুলি) বা যদি একাধিক ব্যতিক্রম থাকে তবে আপনি কিছু পরিচালনা করতে পারেন এবং বাকীটি ফেলে দিতে পারেন।
যখন কোনও প্রোগ্রামার ঘোষণা করে যে পদ্ধতিটি একটি নির্দিষ্ট ধরণের ব্যতিক্রম ছুঁড়ে ফেলেছে, তবে এটি কেবলমাত্র একটি প্রোগ্রাম স্বয়ংক্রিয় পদ্ধতি যা অন্য প্রোগ্রামারদের এই পদ্ধতিটি ব্যবহার করে সতর্ক করার একটি ব্যতিক্রম সম্ভব। প্রোগ্রামার তারপরে কলিং পদ্ধতিটি ঘোষণা করে একই ব্যতিক্রমটি ছুঁড়ে দিয়ে ব্যতিক্রমটি পরিচালনা করতে বা সতর্কতাটি পাস করার সিদ্ধান্ত নিতে পারে। যেহেতু সংকলককে এই নতুন পদ্ধতিতে ব্যতিক্রম সম্ভব তা সতর্ক করা হয়েছে, তাই নতুন পদ্ধতির ভবিষ্যত কলকারীরা ব্যতিক্রমটি পরিচালনা করে কিনা বা এটি ঘোষণা করে এবং এটি ঘটতে এক বা অন্যটিকে কার্যকর করে কিনা তা স্বয়ংক্রিয়ভাবে পরীক্ষা করতে পারে।
এই ধরণের সমাধান সম্পর্কে দুর্দান্ত জিনিসটি হ'ল সংকলক যখন প্রতিবেদন Error: Unhandled exception type java.io.IOException
করে তখন ব্যতিক্রমটি ছুঁড়ে ফেলার জন্য ঘোষিত পদ্ধতির ফাইল এবং লাইন নম্বর দেয়। তারপরে আপনি কেবল বুকটি পাস করতে এবং আপনার পদ্ধতিটিকে "আইওএক্সেপশন" নিক্ষেপ করতে পছন্দ করতে পারেন। এটি মূল পদ্ধতি পর্যন্ত সমস্ত উপায়ে করা যেতে পারে যেখানে এটির পরে প্রোগ্রামটি বন্ধ হয়ে যায় এবং ব্যবহারকারীর কাছে ব্যতিক্রমটি রিপোর্ট করে। যাইহোক, ব্যতিক্রমটি ধরা এবং এটির সাথে কীভাবে ঘটেছে এবং কীভাবে এটি ঠিক করা যায় তা ব্যবহারকারীকে ব্যাখ্যা করার মতো একটি সুন্দর উপায়ে এটি মোকাবেলা করা ভাল। যখন কোনও পদ্ধতি ব্যতিক্রমটিকে ধরে ফেলে এবং পরিচালনা করে, তখন তার ব্যতিক্রমটি আর ঘোষণা করতে হয় না। বাক কথা বলতে বলতে সেখানে থামে।