ব্যতিক্রমগুলিতে দরকারী বিশদ থাকে না কারণ সফ্টওয়্যার ইঞ্জিনিয়ারিং বিভাগে ব্যতিক্রমগুলির ধারণাটি এখনও যথেষ্ট পরিপক্ক হয় নি, তাই অনেক প্রোগ্রামার এগুলি পুরোপুরি বুঝতে পারে না, এবং তাই তারা তাদের সাথে সঠিকভাবে আচরণ করে না।
হ্যাঁ, IndexOutOfRangeException
সুনির্দিষ্ট সূচকটি থাকা উচিত যা সীমার বাইরে ছিল, পাশাপাশি এটি নিক্ষেপ করার সময় কার্যকর ছিল এমন ব্যাপ্তিও থাকতে হবে এবং .NET রানটাইমের নির্মাতাদের পক্ষে এটি ঘৃণ্য যে এটি তা নয়। হ্যাঁ, ওরাকল এর table or view not found
ব্যতিক্রমটিতে সারণীর নাম বা ভিউ থাকা উচিত যা পাওয়া যায় নি, এবং আবারও, যে এটির জন্য দায়ী তার পক্ষে এটি তুচ্ছ নয়।
বড় অংশে, বিভ্রান্তির মূল ধারণাটি থেকে উদ্ভূত হয়েছিল যে ব্যতিক্রমগুলি মানব-পঠনযোগ্য বার্তাগুলি ধারণ করে, যার ফলস্বরূপ ব্যতিক্রমগুলি সম্পর্কে কী বোঝার অভাব থেকে উদ্ভূত হয়, তাই এটি একটি চক্রচক্র।
যেহেতু লোকেরা মনে করে যে ব্যতিক্রমটি একটি মানব-পঠনযোগ্য বার্তা থাকা উচিত, তাই তারা বিশ্বাস করে যে ব্যতিক্রমটি যা কিছু তথ্য বহন করে তা মানব-পঠনযোগ্য বার্তায় ফর্ম্যাট করা উচিত এবং তারপরে তারা সমস্ত মানব-পঠনযোগ্য বার্তা লিখতে বিরক্ত হয়- বিল্ডিং কোড, বা তারা আশঙ্কা করছেন যে এটি করা প্রাইসিং চোখের বার্তাটি দেখতে পাবে বলে তথ্যের অবিশ্বাস্য পরিমাণে প্রকাশ করতে পারে। (অন্যান্য উত্তর দ্বারা উল্লিখিত সুরক্ষা বিষয়গুলি))
তবে বিষয়টির সত্যতা হ'ল তারা এ নিয়ে উদ্বিগ্ন হওয়া উচিত নয় কারণ ব্যতিক্রমটিতে কোনও মানব-পঠনযোগ্য বার্তা থাকা উচিত নয় । ব্যতিক্রমগুলি এমন জিনিস যা কেবল প্রোগ্রামারদের কখনও দেখা উচিত এবং / অথবা এর সাথে ডিল করা উচিত। যদি কোনও ব্যবহারকারীর কাছে ব্যর্থতার তথ্য উপস্থাপনের প্রয়োজন হয় তবে তা খুব উচ্চ স্তরে সম্পন্ন করা উচিত একটি পরিশীলিত পদ্ধতিতে এবং ব্যবহারকারীর ভাষায়, যা পরিসংখ্যানগতভাবে বলতে হয়, এটি ইংরেজী হওয়ার সম্ভাবনা কম।
সুতরাং, আমাদের প্রোগ্রামারদের জন্য, ব্যতিক্রমটির "বার্তা" ব্যতিক্রমের শ্রেণীর নাম এবং ব্যতিক্রমের সাথে সম্পর্কিত অন্যান্য যে কোনও তথ্যই ব্যতিক্রম অবজেক্টের (চূড়ান্ত / পঠনযোগ্য) সদস্য ভেরিয়েবলে অনুলিপি করা উচিত। সাধারণত, এটি প্রতিটি একক ধারণা। এইভাবে, কোনও বার্তা উত্পন্ন করার প্রয়োজন নেই (বা হওয়া উচিত) এবং তাই কোনও দাম্পত্য চোখ এটি দেখতে পারে না।
টমাস ওয়ানস দ্বারা প্রকাশিত উদ্বেগের সমাধানের জন্য নীচে একটি মন্তব্যে:
হ্যাঁ, অবশ্যই, কিছু স্তরে, আপনি ব্যতিক্রম সম্পর্কিত একটি লগ বার্তা তৈরি করবেন । আপনি যা বলছেন তা নিয়ে আপনি ইতিমধ্যে সমস্যাটি দেখেছেন: একদিকে, স্ট্যাক ট্রেস ব্যতীত একটি ব্যতিক্রম লগ বার্তা অকেজো, তবে অন্যদিকে, আপনি ব্যবহারকারীকে পুরো ব্যতিক্রম স্ট্যাকের সন্ধানটি দেখতে দিতে চান না। আবার এখানে আমাদের সমস্যা হ'ল আমাদের দৃষ্টিকোণটি traditionalতিহ্যবাহী অনুশীলনগুলির দ্বারা বদ্ধ হয়। লগ ফাইলগুলি traditionতিহ্যগতভাবে সরল পাঠ্যে ছিল, যা আমাদের শৃঙ্খলা শৈশবকালীন থাকাকালীন ঠিক থাকতে পারে, তবে সম্ভবত আর নয়: যদি কোনও সুরক্ষা উদ্বেগ থাকে তবে লগ ফাইলটি অবশ্যই বাইনারি এবং / অথবা এনক্রিপ্ট হওয়া উচিত।
বাইনারি বা প্লেইন পাঠ্য যাই হোক না কেন, লগ ফাইলটি এমন একটি স্ট্রিম হিসাবে ভাবা উচিত যেখানে অ্যাপ্লিকেশনটি ডিবাগ তথ্যকে ক্রমিক করে তোলে। এই জাতীয় স্ট্রিমটি কেবল প্রোগ্রামারদের চোখের জন্যই হবে এবং কোনও ব্যতিক্রমের জন্য ডিবাগিং তথ্য উত্পন্ন করার কাজটি ব্যতিক্রমটিকে ডিবাগ লগ স্ট্রিমে সিরিয়াল করার মতোই সহজ হওয়া উচিত। এইভাবে, লগটি দেখে আপনি ব্যাতিক্রম শ্রেণীর নাম দেখতে পাবেন, (যা আমি ইতিমধ্যে বলেছি যে সমস্ত ব্যবহারিক উদ্দেশ্যে "বার্তা",) ব্যতিক্রম সদস্যের প্রতিটি পরিবর্তনশীল যা প্রাসঙ্গিক - সমস্ত কিছু বর্ণনা করে- এবং-ব্যবহারিক-তে-অন্তর্ভুক্ত-এ-লগ এবং সম্পূর্ণ স্ট্যাক ট্রেস। একটি মানব-পঠনযোগ্য ব্যতিক্রম বার্তার বিন্যাস কীভাবে এই প্রক্রিয়া থেকে স্পষ্টতই অনুপস্থিত Note
দ্রষ্টব্য
এই বিষয়ে আমার আরও কয়েকটি ধারণার উত্তর পাওয়া যাবে: একটি ভাল ব্যতিক্রম বার্তা কীভাবে লিখবেন
PPS
মনে হচ্ছে যে মানুষের অনেক বাইনারি লগ ফাইল সম্পর্কে আমার পরামর্শ দ্বারা বন্ধ টিক হচ্ছে, তাই আমি আবার উত্তর সংশোধিত এটা এমনকি আরো স্পষ্ট যে আমি এখানে পরামর্শ করছি করতে অনুগ্রহ করে না যে লগ ফাইল উচিত বাইনারি হতে, কিন্তু যে লগ ফাইলটি বাইনারি হতে পারে, যদি প্রয়োজন হয়।