ব্যতিক্রম কি ক্রস কাটিয়া উদ্বেগকে পরিচালনা করছে?


13

ব্যতিক্রম হ্যান্ডলিং এবং লগ ইন উভয়ই ক্রস কাটিয়া উদ্বেগের উদ্বেগের মধ্যে আমি খুব একটা পার্থক্য দেখছি না। আপনি কি মনে করেন? কোনও পদ্ধতি বাস্তবায়িত করছে এমন মূল যুক্তির সাথে আন্তঃবাহিত হওয়ার চেয়ে এটিকে আলাদা করে পরিচালনা করা উচিত নয়?

সম্পাদনা : আমি যা বলতে চাইছি তা হ'ল আমার মতে একটি পদ্ধতি বাস্তবায়নের ক্ষেত্রে কেবল কার্যকর করার পথে যুক্তি থাকা উচিত এবং ব্যতিক্রমগুলি অন্য কোথাও পরিচালনা করা উচিত। এটি চেক / চেক করা ব্যতিক্রমগুলি সম্পর্কে নয়।

উদাহরণস্বরূপ, কোনও ভাষা এই জাতীয় নির্মাণ ব্যবহার করে সম্পূর্ণ পরীক্ষিত উপায়ে ব্যতিক্রমগুলি পরিচালনা করতে পারে:

class FileReader {

  public String readFile(String path) {
    // implement the reading logic, avoid exception handling
  }

}

handler FileReader {

   handle String readFile(String path) {
      when (IOException joe) {
        // somehow access the FileInputStram and close it
      }
   }

}

উপরের ধারণাগত ভাষায়, প্রোগ্রামটি FileReader হ্যান্ডলারের অনুপস্থিতিতে সংকলন করবে না , কারণ FileReader শ্রেণীর পাঠ্য ফাইলটি ব্যতিক্রম ছোঁড়াচ্ছে না। সুতরাং FileReader হ্যান্ডলারটি ঘোষণার মাধ্যমে, সংকলকটি নিশ্চিত হতে পারে যে এটি পরিচালনা করা হচ্ছে এবং প্রোগ্রামটি সংকলন করে।

এইভাবে আমাদের চেকড এবং চেক না করা উভয় ব্যতিক্রম সমস্যা: দৃust়তা এবং পঠনযোগ্যতা সর্বোত্তম।

উত্তর:


14

কিছু ক্ষেত্রে হ্যাঁ

আপনি লগ করতে চান এমন ক্ষেত্রে আপনার ব্যতিক্রম রয়েছে (যা আমি প্রায় সর্বদা বলে ধরে নিই) তবে হ্যাঁ ব্যতিক্রমটি ক্রস কাটার উদ্বেগের সাথে আবদ্ধ।

বেশিরভাগ সময় না

তবে সকেটলিস্টারের উদাহরণটি বিবেচনা করুন, যদি কোনও সকেলেটিস্টারের সংযোগটি অন্য প্রান্তটি বাদ দেওয়ার কারণে কোনও ব্যতিক্রম ছুঁড়ে ফেলে, তবে এটি প্রত্যাশিত আচরণ হওয়া উচিত এবং সুতরাং অ্যাপ্লিকেশনটি পরিস্থিতি অনুসারে কাজ করা উচিত যা ব্যতিক্রম ঘটায়। এটি এমন কিছু নয় যা জেনেরিক দিকটি পরিচালনা করা উচিত এবং তাই ক্রস কাটা উদ্বেগ হওয়া উচিত নয়।

ক্রস কাটিয়া উদ্বেগ চিহ্নিত করা

আপনি যদি একই কোডটি বারবার নকল করে থাকেন তবে এটিকে বিমূর্ত করা দরকার। যদি বিমূর্ততা নিজেকে একাধিক স্তরে উন্নীত করে, তবে এটি ক্রস কাটা উদ্বেগ হতে পারে। তবেই এটি বিবেচনা করা উচিত।


4

লগিং alচ্ছিক। ব্যতিক্রম হ্যান্ডলিং নয়।

লগিং বেশ জেনেরিক এবং নির্দিষ্ট যুক্তির সূত্র ধরে এটি জেনেরিক গ্রাহককে ফিড দেয়। ব্যতিক্রমগুলি সর্বদা যুক্তির সাথে সুনির্দিষ্ট থাকে এবং সেই যুক্তিটি সম্পর্কে জ্ঞাত কিছু কোড এটি তৈরি করা গোলমাল পরিচালনা করতে হয়।

কমপক্ষে আমার দুটি ব্যবহারের সীমিত ব্যবহারের অর্থ এই যে দুটি লক্ষ্যই বিভিন্নভাবে পরিচালনা করা হয় একই নকশার ছাতার নিচে নয়।


1

আমি ব্যতিক্রমগুলির নির্দিষ্ট ধরণের ব্যতিক্রমগুলির জন্য ক্রস কাটিয়া উদ্বেগ হিসাবে হ্যান্ডলিংটিকে দেখি। স্থানীয় ব্যতিক্রম রয়েছে যে কেবল তাত্ক্ষণিক কলিং কোডটি সঠিকভাবে পরিচালনা করতে পারে। কোয়েরি চালানোর চেষ্টা করার সময় একটি উদাহরণ ডাটাবেস ব্যতিক্রম হতে পারে। তবে এমন ব্যতিক্রমগুলিও রয়েছে যা বিশ্বব্যাপী আরও পরিচালনা করতে হবে এবং করা উচিত। সুরক্ষা শংসাপত্রের অভাব সম্পর্কিত একটি উদাহরণ হতে পারে (ব্যবহারকারীকে আবার লগ ইন করতে বাধ্য করুন)। অথবা খুব কমপক্ষে আপনার কোনও গ্লোবাল হ্যান্ডলারের প্রয়োজন যদি কোনও ব্যতিক্রম আরও নির্দিষ্ট কোডের মাধ্যমে সরে যায় তবে ব্যবহারকারীকে এটি পুনরায় চালু করতে বা আইটি বা এই জাতীয় কিছুতে লগ প্রেরণের জন্য তাদের কী করা উচিত তা বোঝাতে। বিশ্বব্যাপী পরিচালিত ব্যতিক্রমগুলির এই ধরণের ক্ষেত্রে এটি ক্রস কাটিং উদ্বেগ।


0

আমি মনে করি এটি ফাঁসযুক্ত বিমূর্ততাগুলির সাথে জড়িত।

বিমূর্ততার স্তরগুলির মাধ্যমে তারা প্রস্তাব দিলে অনেক ব্যতিক্রম ধরা ও পুনর্বিবেচনা করা উচিত। পুনঃ-নিক্ষেপটি ব্যতিক্রমটিকে নতুন রূপে ছুঁড়ে ফেলা উচিত, যে বিমূর্ততা পুনরায় নিক্ষেপ করছে তার উপযুক্ত, যাতে এটি ইন্টারফেসের অংশ হিসাবে বোধ তৈরি করে। অন্য কথায়, বিমূর্ততার নিম্ন স্তরের ব্যতিক্রমগুলি বর্তমান-বিমূর্ত আকারে অনুবাদ করা উচিত যাতে উচ্চ বিমূর্ততার নিম্ন স্তরের সম্পর্কে এমনকি খাঁটি ব্যতিক্রম হ্যান্ডলিংয়ের জন্য জানা দরকার না।

তবে, "ফাঁসী বিমূর্তির নীতি" একটি বিষয়। কিছু ব্যতিক্রম এমন রূপে অনুবাদ করা যায় না যা বিমূর্ততার পরবর্তী স্তরটির মধ্যে অর্থবোধ করে।

নেটওয়র্কযুক্ত ফাইল সিস্টেম সম্পর্কিত ব্যতিক্রম একটি সহজ উদাহরণ। একটি নেটওয়ার্ক ব্যর্থতা এমন কোনও পদে প্রকাশ করা যায় না যা কোনও "ফাইল" বিমূর্তিটিকে বোঝায় বা যদি তা করে তবে বিমূর্তি ফাইল হ্যান্ডলিংয়ের প্রয়োগ সম্পর্কিত সমস্ত বিবরণকে পুরোপুরি বিমূর্ত করতে পারেনি।

একটি নেটওয়ার্ক ব্যর্থতা তাই অন্তর্নিহিত নেটওয়ার্ক বিমূর্ততা থেকে ফাঁস হবে এবং তাই কোডের বাকী অংশের মধ্যে অবশ্যই ক্রস-কাটিং উদ্বেগ হওয়া উচিত।

যদিও ব্যতিক্রমগুলির ক্ষেত্রে এটি অনন্য নয়। ফাইল API গুলিগুলির জন্য এই সমস্ত রিটার্ন-ভ্যালু ত্রুটি কোডগুলি যা ফাইল বিমূর্তির সাথে সত্যই সম্পর্কিত নয়, তবে তার পরিবর্তে হার্ড-ডিস্ক বা নেটওয়ার্ক বা যে কোনও ব্যর্থতা একই জিনিস হ'ল আলাদা ডিস্কে, হার্ড-ডিস্ক ব্যর্থতা এবং নেটওয়ার্ক ব্যর্থতা বোঝায় ইত্যাদি ব্যর্থতা কীভাবে রিপোর্ট করা হয় তা নির্বিশেষে ক্রস কাটা উদ্বেগগুলি are

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