ব্যতিক্রমী জিনিসগুলির জন্য ব্যতিক্রমগুলি ব্যবহার করুন, আপনি যে জিনিসগুলি যুক্তিসঙ্গতভাবে প্রায়শই মুখোমুখি হওয়ার আশা করতে পারবেন না, এমন জিনিস যা নির্দেশ করে যে কিছু ভুল হয়ে গেছে। উদাহরণস্বরূপ, যদি নেটওয়ার্কটি ডাউন থাকে তবে এটি ওয়েব সার্ভারের জন্য একটি ব্যতিক্রমী জিনিস। যদি ডাটাবেস অনুপলব্ধ থাকে তবে এর অর্থ হ'ল কিছু ভুল। যদি কনফিগারেশন ফাইলটি অনুপস্থিত থাকে, তবে সম্ভবত এটির অর্থ হ'ল ব্যবহারকারী এটির সাথে গণ্ডগোল করেছেন।
ভুল কোড হ্যান্ডেল করতে ব্যতিক্রম ব্যবহার করবেন না। কোডের নির্ভুলতা যাচাই করার জন্য, আপনাকে হয় নীচ ব্যবহার করা উচিত, বা। নেট ফ্রেমওয়ার্ক 4 এবং তার পরে কোড চুক্তি (যা দৃ as় প্রতিস্থাপন এবং অতিরিক্ত, বিশেষত মূল্যবান বৈশিষ্ট্য রয়েছে) ব্যবহার করা উচিত।
ব্যতিক্রমী ক্ষেত্রে ব্যতিক্রম ব্যবহার করবেন না। এই সত্য যে ব্যবহারকারীকে একটি নম্বর লিখতে বলা হয়েছিল, "কুকুর" প্রবেশ করানো ব্যতিক্রম প্রাপ্য তাই ব্যতিক্রমী নয়।
ব্যতিক্রমগুলির প্রকারগুলি বেছে নেওয়ার সময় সাবধানতা অবলম্বন করুন। যখন প্রয়োজন হয় তখন নিজের মতো করে তৈরি করুন। পিতা-মাতাকে ধরাই বাচ্চাদেরও ধরবে তা মনে রেখে, সাবধানতার সাথে উত্তরাধিকারটি বেছে নিয়েছে। কখনই না throw Exception
।
ত্রুটির জন্য রিটার্ন কোড ব্যবহার করবেন না। ত্রুটি কোডগুলি সহজেই মাস্ক করা হয়, উপেক্ষা করা হয়, ভুলে যায়। যদি কোনও ত্রুটি হয় তবে হয় এটি পরিচালনা করুন বা এটি উপরের স্ট্যাকে প্রচার করুন।
যে ক্ষেত্রে কোনও পদ্ধতিতে ত্রুটি ফিরে আসার আশা করা হয় এবং ত্রুটিটি ব্যতিক্রমী নয়, এনামগুলি ব্যবহার করুন, কখনও ত্রুটি সংখ্যাটি ব্যবহার করবেন না। উদাহরণ:
// Note that the operation fails pretty often, since it deals with the servers which are
// frequently unavailable, and the ones which send garbage instead of the actual data.
private LoadOperationResult LoadProductsFromWeb()
{
...
}
অর্থ LoadOperationResult.ServerUnavailable
, LoadOperationResult.ParsingError
ইত্যাদি আরো অনেক কিছু স্পষ্ট হয়, তুলনায় বলতে যে কোড স্মরণ 12 মানে যে সার্ভার ডাউন, এবং কোড 13 - যে ডেটা বিশ্লেষণ করা যায় না।
ত্রুটি কোডগুলি ব্যবহার করুন যখন তারা সাধারণগুলি উল্লেখ করে, নির্দিষ্ট ডোমেনে কাজ করে এমন প্রতিটি বিকাশকারী দ্বারা পরিচিত। উদাহরণস্বরূপ, HTTP 404 পাওয়া যায়নি বা HTTP 500 অভ্যন্তরীণ সার্ভার ত্রুটির জন্য কোনও এনাম মান পুনর্নবীকরণ করবেন না।
বুলিয়ান থেকে সাবধান থাকুন। যত তাড়াতাড়ি বা পরে, আপনি কেবল একটি নির্দিষ্ট পদ্ধতি সফল হয়েছে কিনা ব্যর্থ হয়েছে তা জানতে চাইবেন না, তবে কেন। ব্যতিক্রম এবং এনামগুলি এর জন্য অনেক বেশি শক্তিশালী।
প্রতিটি ব্যতিক্রম ধরবেন না (যদি আপনি স্ট্যাকের একেবারে শীর্ষে না হন) আপনি যদি কোনও ব্যতিক্রম ধরা দেন তবে আপনার এটি পরিচালনা করার জন্য প্রস্তুত হওয়া উচিত। সমস্ত কিছুকে ক্যাচ করা দেখিয়ে দিচ্ছে যে আপনার কোডটি সঠিকভাবে চলে কিনা আপনার কোনও যত্ন নেই। এটি "এখনই সন্ধান করতে চাই না কীভাবে এটি ঠিক করতে হবে" এর সমাধান করতে পারে তবে তাড়াতাড়ি বা পরে আপনাকে আঘাত করবে।
সি # তে কখনই এর মতো ব্যতিক্রমগুলি পুনর্বিবেচনা করবেন না:
catch (SomeException ex)
{
...
throw ex;
}
কারণ আপনি স্ট্যাক ভাঙ্গছেন। পরিবর্তে এটি করুন:
catch (SomeException)
{
...
throw;
}
ব্যতিক্রম বার্তা লিখতে চেষ্টা করুন। কতবার দেখেছি এরকম কিছু throw Exception("wrong data")
বা throw Exception("shouldn't call this method in this context")
। নিজেকে ছয় মাস পরে অন্য বিকাশকারীদের, কোন তথ্য কোনটি ভুল এবং কেন বা কেন আমরা একটি প্রসঙ্গে কিছু পদ্ধতি কল করতে পারি না বা কোন প্রসঙ্গে যথাযথভাবে বলা উচিত তা সম্পর্কে কোনও ধারণা নেই।
ব্যবহারকারীর কাছে ব্যতিক্রম বার্তা প্রদর্শন করবেন না। এগুলি সাধারণ মানুষের কাছে প্রত্যাশিত নয় এবং প্রায়শই বিকাশকারীরা তাদের কাছে এমনকি অপঠনযোগ্যও হন।
ব্যতিক্রম বার্তা স্থানীয়করণ করবেন না। স্থানীয়ীকৃত বার্তার জন্য ডকুমেন্টেশন সন্ধান করানো ক্লান্তিকর এবং অর্থহীন: প্রতিটি বার্তা কেবল ইংরেজী এবং ইংরেজী ভাষায় হওয়া উচিত।
ব্যতিক্রম এবং ত্রুটিগুলিতে একচেটিয়াভাবে ফোকাস করবেন না: লগগুলি অত্যন্ত গুরুত্বপূর্ণ।
.NET- এ, পদ্ধতির এক্সএমএল ডকুমেন্টেশনে ব্যতিক্রমগুলি অন্তর্ভুক্ত করতে ভুলবেন না:
/// <exception cref="MyException">Description of the exception</exception>
এক্সএমএল ডকুমেন্টেশনে ব্যতিক্রমগুলি অন্তর্ভুক্ত লাইব্রেরিটি ব্যবহার করা ব্যক্তির পক্ষে জিনিসগুলি অনেক সহজ করে তোলে। কোন ব্যতিক্রম সম্ভবত কোনও পদ্ধতিতে এবং কেন ব্যবহার করা যেতে পারে তা অনুমান করার চেষ্টা করার চেয়ে বিরক্তিকর আর কিছু নেই।
এই অর্থে¹, জাভা ব্যতিক্রম হ্যান্ডলিং একটি কঠোরতর, আরও ভাল পদ্ধতির সরবরাহ করে। এটি আপনাকে বলা হয় পদ্ধতিগুলির দ্বারা সম্ভাব্যভাবে ছুঁড়ে দেওয়া ব্যতিক্রমগুলি মোকাবেলা করতে বাধ্য করে বা আপনার নিজস্ব পদ্ধতিতে ঘোষণা করে যে এটি যে ব্যতিক্রমগুলি আপনি পরিচালনা করেন না তা ফেলে দিতে পারে, বিশেষত জিনিসগুলিকে স্বচ্ছ করে তোলে।