কে পড়া উচিত ব্যাতিক্রম ess মেসেজ যদি আদৌ থাকে?


27

ব্যতিক্রমগুলি ডিজাইন করার সময় আমি এমন কোনও বার্তা লিখি যা ব্যবহারকারীর বা বিকাশকারীদের বুঝতে হবে? ব্যতিক্রম বার্তাগুলির পাঠক আসলে কার হওয়া উচিত?

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

মেসেজ না লিখলেই ভাল হয় না বরং এর পরিবর্তে বিশেষ ব্যতিক্রমী রেন্ডারার থাকতে পারে যা বিভিন্ন ভাষায় অর্থবোধক বার্তাগুলি তৈরির ক্ষেত্রে যত্নের পরিবর্তে কোডগুলিতে হার্ডকোডিংয়ের যত্ন নেয়?


আমাকে জিজ্ঞাসা করা হয়েছে যে এই প্রশ্নগুলির কোনওটিই আমার প্রশ্নের উত্তর সরবরাহ করে:

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

আমি এমনকি মনে করি যে বিখ্যাত বার্তাটির কোনও বাস্তব মূল্য নেই কারণ এটি কেবল ভিন্ন শব্দে ব্যাতিক্রমের নামটির পুনরাবৃত্তি করে তাই কেন এগুলি লিখতে মোটেই বিরক্ত করবেন? আমি এগুলি স্বয়ংক্রিয়ভাবে উত্পন্ন করতে পারি।

আমার কাছে ব্যতিক্রম বার্তায় এর পাঠকদের আলাদা করার অভাব রয়েছে। একটি নিখুঁত ব্যতিক্রম বার্তায় কমপক্ষে দুটি সংস্করণ সরবরাহ করা প্রয়োজন: একটি শেষ ব্যবহারকারীর জন্য এবং একটি বিকাশকারীর জন্য। এটিকে কেবল একটি বার্তা বলা খুব সাধারণ is তারপরে একটি বিকাশকারী বার্তাটি ইংরেজিতে লেখা উচিত তবে শেষ ব্যবহারকারীর বার্তাটি অন্য ভাষায় অনুবাদ করার প্রয়োজন হতে পারে। কেবলমাত্র একটি বার্তা দিয়ে এগুলি অর্জন করা সম্ভব নয় তাই ব্যতিক্রমের জন্য শেষ-ব্যবহারকারীর বার্তার জন্য কিছু সনাক্তকারী সরবরাহ করা দরকার যা আমি যেমন বলেছি, বিভিন্ন ভাষায় উপলভ্য হতে পারে।

অন্যান্য লিঙ্কযুক্ত প্রশ্নগুলি আমি যখন পড়ে থাকি তখন আমার ধারণাটি অনুভূত হয় যে একটি ব্যতিক্রম বার্তাটি আসলে কোনও ব্যবহারকারী দ্বারা পড়া উচিত এবং কোনও বিকাশকারী নয় ... একটি একক বার্তাটি একটি কেক থাকা এবং এটিও খাওয়ার মতো।


4
প্রোগ্রামারগুলিতে এখানে মনে রাখা অন্য দুটি প্রশ্ন রয়েছে। সেগুলি নকল কিনা তা আমি নিশ্চিত নই, তবে আমার মনে হয় আপনার এগুলি পড়তে হবে এবং সম্ভবত তারা আপনার বা কিছু উদ্বেগের সমাধান করবে: একটি ভাল ব্যতিক্রম বার্তা কীভাবে লিখবেন এবং কেন অনেক ব্যতিক্রম বার্তায় দরকারী বিবরণ নেই? ?
থমাস Owens

2
@ থমাস ওভেনস আমি এগুলি উভয়ই পড়েছি কিন্তু তারা কোনও ব্যতিক্রম বার্তার নির্দিষ্ট প্রাপককে সম্বোধন করে না। তারা সাধারণভাবে ব্যবহারকারীদের সম্পর্কে কথা বলেন তবে তিনি কে? প্রোগ্রামিং বা বিকাশকারীদের সম্পর্কে এখন ধারণা থাকা সফটওয়্যারটির ব্যবহারকারী কি ভুল হয়েছে বলে বিশ্লেষণ করা উচিত? আমি কখনই নিশ্চিত নই যে বার্তা লেখার সময় আমার কাকে সম্বোধন করা উচিত।
t3chb0t

2
আমি মনে করি যে এখানে একটি উত্তরের উত্তরগুলি উভয়ই বা উভয় প্রশ্নেরই উল্লেখ করতে পারে তবে তারা সদৃশ থেকে অনেক দূরে।
মনিকার সাথে লাইটনেস রেস

1
পৃথিবীতে কেন এটি নকল হিসাবে বন্ধ ছিল? এমনকি যদি এটি অন্যান্য প্রশ্নের সদৃশ হয় (যা এটি নয়) তবে এর একটির আরও ভাল উত্তর আছে, এটি অন্যটি হওয়া উচিত যা সদৃশ হিসাবে চিহ্নিত হয়েছে।
বেন অ্যারসন

2
@ মিশেলটি আমি এখনও সত্যিই খুব বেশি ওভারল্যাপ দেখতে পাই না যদি আপনি মনে করেন না যে ব্যাতিক্রমী বার্তা ব্যবহারকারীদের জন্য রয়েছে
বেন অ্যারনসন

উত্তর:


46

এই বার্তাগুলি অন্যান্য বিকাশকারীদের জন্য

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

  • সক্রিয় ডিবাগিং। কোড লিখতে গিয়ে কী ঘটেছিল তা বের করার চেষ্টা করার সময় আপনি আসলে একটি ডিবাগার চালাচ্ছেন। এই প্রসঙ্গে, একটি সহায়ক ব্যতিক্রম আপনাকে কী ভুল হচ্ছে তা বুঝতে সহজতর করে বা শেষ পর্যন্ত একটি কাজের প্রস্তাব দেওয়ার পরামর্শ দিয়ে সহায়তা করবে (যদিও এটি alচ্ছিক)।

  • প্যাসিভ ডিবাগিং। কোড উত্পাদন চালায় এবং ব্যর্থ হয়। ব্যতিক্রম লগড হয়েছে, তবে আপনি কেবল বার্তাটি এবং স্ট্যাক ট্রেস পাবেন। এই প্রসঙ্গে, একটি সহায়ক ব্যতিক্রম বার্তা আপনাকে দ্রুত বাগ স্থানীয়করণে সহায়তা করবে।

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

উদাহরণস্বরূপ, IOSecurityExceptionকোনও ফাইল লেখার সময় নিক্ষিপ্ত একটি ব্যতিক্রম সমস্যা সম্পর্কে খুব স্পষ্ট নয়: এটি কি কারণ আমাদের কোনও ফাইল অ্যাক্সেস করার অনুমতি নেই? অথবা আমরা এটি পড়তে পারি, তবে লিখব না? অথবা সম্ভবত ফাইলটি বিদ্যমান নেই এবং আমাদের সেখানে ফাইল তৈরি করার অনুমতি নেই? অথবা সম্ভবত এটি লক হয়ে গেছে (আশা করা যায়, ব্যতিক্রমের ধরণটি এক্ষেত্রে পৃথক হবে তবে বাস্তবে, প্রকারগুলি কখনও কখনও গুপ্ত হতে পারে)। অথবা হতে পারে কোড অ্যাক্সেস সুরক্ষা আমাদের কোনও আই / ও অপারেশন করতে বাধা দেয়?

পরিবর্তে:

আইওএসিকিউরিটি এক্সেপশন: ফাইলটি পাওয়া গেছে তবে এর সামগ্রীগুলি পড়ার অনুমতি অস্বীকার করা হয়েছিল।

আরও অনেক স্পষ্ট। এখানে, আমরা তাত্ক্ষণিকভাবে জানি যে ডিরেক্টরিতে অনুমতিগুলি সঠিকভাবে সেট করা আছে (অন্যথায়, আমরা ফাইলটি বিদ্যমান তা জানতে সক্ষম হব না) তবে ফাইল স্তরের অনুমতিগুলি সমস্যাযুক্ত।

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

নোট করুন যে প্রযুক্তিগত (প্রায়শই পারফরম্যান্স) কারণে, কিছু বার্তাগুলি তাদের হওয়া উচিতের চেয়ে অনেক বেশি ক্রিপ্টিক হয়। । নেট এর NullReferenceException:

অবজেক্টের রেফারেন্স কোনও অবজেক্টের উদাহরণে সেট করা হয়নি।

এটি কোনও বার্তার একটি দুর্দান্ত উদাহরণ যা সহায়ক নয়। সহায়ক বার্তাটি হ'ল:

productযখন ডাকা হবে তখন অবজেক্টের রেফারেন্স কোনও অবজেক্টের উদাহরণে সেট করা নেই product.Price

এই বার্তা শেষ ব্যবহারকারীদের জন্য নয়!

শেষ ব্যবহারকারীদের ব্যতিক্রম বার্তা দেখার আশা করা হয় না। কখনও। যদিও কিছু বিকাশকারী এই বার্তাগুলি ব্যবহারকারীদের দেখিয়ে শেষ করেছেন, এটি ব্যবহারকারীর দুর্বল অভিজ্ঞতা এবং হতাশার দিকে পরিচালিত করে। বার্তা যেমন:

অবজেক্টের রেফারেন্স কোনও অবজেক্টের উদাহরণে সেট করা হয়নি।

শেষ ব্যবহারকারীর কাছে একেবারে কিছুই নয়, এবং এটি সর্বদাই এড়ানো উচিত।

সবচেয়ে খারাপ পরিস্থিতি হ'ল একটি বিশ্বব্যাপী চেষ্টা / ধরা যা ব্যবহারকারীর ব্যতিক্রম ছোঁড়ে এবং অ্যাপটি থেকে বেরিয়ে আসে। এমন একটি অ্যাপ্লিকেশন যা এর ব্যবহারকারীদের সম্পর্কে চিন্তা করে:

  • প্রথম স্থানে ব্যতিক্রমগুলি পরিচালনা করে। বেশিরভাগগুলি ব্যবহারকারীকে বিরক্ত না করে পরিচালনা করা যায়। নেটওয়ার্ক ডাউন? কয়েক সেকেন্ড অপেক্ষা করে আবার চেষ্টা করবেন না কেন?

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

  • কোনও ব্যবহারকারীকে কোনও ফর্মে কোনও ক্রিয়া সম্পাদনের জন্য আমন্ত্রণ জানিয়েছে যা কোনও ত্রুটি নয়। কোনও ফাইল অ্যাক্সেস করার জন্য পর্যাপ্ত অনুমতি নেই? ব্যবহারকারীকে প্রশাসনিক অনুমতি দেওয়ার জন্য বা অন্য কোনও ফাইল বাছাই করতে বলবেন না কেন?

  • যদি অন্য কোনও কাজ না করে তবে একটি সহায়ক, বন্ধুত্বপূর্ণ ত্রুটি দেখায় যা ব্যবহারকারীর হতাশা হ্রাস করতে বিশেষভাবে লেখা হয়েছে, ব্যবহারকারীকে কী ভুল হয়েছে তা বুঝতে সাহায্য করুন এবং শেষ পর্যন্ত সমস্যাটি সমাধান করতে সহায়তা করুন এবং ভবিষ্যতে ত্রুটি রোধে সহায়তা করুন (যখন প্রযোজ্য হবে)।

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

    শূন্য দ্বারা বিভাজন ঘটেছে। [ঠিক আছে]

    পরিবর্তে, কেউ এটিকে ব্যতিক্রম ছুঁড়ে দিতে দেয় এবং তারপরে এটি এমন একটি উচ্চ স্তরে ধরে ফেলতে পারে যেখানে আমরা ব্যবসায়ের প্রসঙ্গটি জানতাম এবং শেষ ব্যবহারকারীকে প্রকৃতপক্ষে সহায়তা করার জন্য সেই অনুসারে কাজ করতে পারি, এভাবে কিছু দেখাচ্ছে:

    E13 ক্ষেত্রের ক্ষেত্রে ডি 13 এর ক্ষেত্রের মানটির সমান হতে পারে না, কারণ এই মানগুলির বিয়োগটি বিভাজন হিসাবে ব্যবহৃত হয়। [ঠিক আছে]

    অথবা হতে পারে:

    এটিপি পরিষেবাদির দ্বারা প্রতিবেদন করা মানগুলি স্থানীয় ডেটাগুলির সাথে সঙ্গতিপূর্ণ নয়। স্থানীয় ডেটা সিঙ্কের বাইরে চলে যাওয়ার কারণে এটি হতে পারে। আপনি কি শিপিংয়ের তথ্য সিঙ্ক্রোনাইজ করতে এবং আবার চেষ্টা করতে চান? [হ্যাঁ না]

এই বার্তাগুলি বিশ্লেষণের জন্য নয়

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

ব্যতিক্রম বার্তাটি কল্পনা করুন:

ক্যাশিংয়ের সাথে সংযোগ স্থাপনের সময় 500 এমএস অপেক্ষা করার পরে সময় শেষ হয়ে যায়। হয় সময়সীমা বাড়াতে বা সার্ভারের কার্যকারিতা হ্রাস করতে পারফরম্যান্স পর্যবেক্ষণটি পরীক্ষা করে দেখুন। ক্যাচিং সার্ভারের জন্য অপেক্ষা করার গড় সময় ছিল 6 এমএস। গত মাসের জন্য, 4 এমএস গত সপ্তাহে এবং 377 এমএসের জন্য। শেষ ঘন্টা জন্য।

আপনি "500", "6", "4" এবং "377" মান বের করতে চান। পার্সিংয়ের জন্য আপনি যে পদ্ধতির ব্যবহার করবেন সে সম্পর্কে কিছুটা চিন্তা করুন এবং কেবল তখনই পড়া চালিয়ে যান।

আপনার ধারণা আছে? গ্রেট।

এখন, মূল বিকাশকারী একটি টাইপো আবিষ্কার করেছেন:

Connecting to the caching sever timed out after waiting [...]

হতে হবে:

                            ↓
Connecting to the caching server timed out after waiting [...]

তদুপরি, বিকাশকারী বিবেচনা করে যে মাস / সপ্তাহ / এক ঘন্টা বিশেষভাবে প্রাসঙ্গিক নয়, তাই তিনি একটি অতিরিক্ত পরিবর্তনও করেন:

ক্যাচিং সার্ভারের জন্য অপেক্ষা করার গড় সময় ছিল 6 এমএস। গত মাসে, 5 এমএস গত 24 ঘন্টা এবং 377 এমএসের জন্য। শেষ ঘন্টা জন্য।

আপনার পার্সিং দিয়ে কি হয়?

পার্সিংয়ের পরিবর্তে, আপনি ব্যতিক্রমী বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন (যার মধ্যে ডেটা সিরিয়ালাইজ করার সাথে সাথে এটি যা খুশি থাকতে পারে):

{
    message: "Connecting to the caching [...]",
    properties: {
        "timeout": 500,
        "statistics": [
            { "timespan": 1, "unit": "month", "average-timeout": 6 },
            { "timespan": 7, "unit": "day", "average-timeout": 4 },
            { "timespan": 1, "unit": "hour", "average-timeout": 377 },
        ]
    }
}

এখন এই ডেটা ব্যবহার করা কত সহজ?

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


2
শেষ ব্যবহারকারী সম্পর্কে ভাল পয়েন্ট। আমি যুক্ত করব যে সুরক্ষার কারণে শেষ ব্যবহারকারীর ব্যতিক্রম বার্তাগুলিও দেখা উচিত নয়। কোনও অ-সাধারণ ব্যবহারকারীকে ত্রুটির সঠিক প্রকৃতি জেনে কোনও শোষণ উপস্থাপন করতে পারে। শেষ ব্যবহারকারীর কেবল তার বা সে কী করছে সে প্রসঙ্গে ত্রুটিটি জানতে হবে।
নীল

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

4
আমি মনে করি সকলেই সচেতন যে "অবজেক্ট রেফারেন্স ..." বার্তাটি সাহায্যহীন। তবে প্রাসঙ্গিক প্রশ্নটি কী আপনি কোন মেশিন কোডটি তৈরি করতে চাইবেন যেটি আপনি চান এমন বার্তা তৈরি করে? আপনি যদি এই অনুশীলনটি করেন তবে আপনি দ্রুত আবিষ্কার করতে পারবেন যে ব্যতিক্রমী সমস্ত ক্ষেত্রে ব্যতীত প্রচুর পারফরম্যান্স ব্যয় ছাড়াই বার্তাটি সহজেই তৈরি করা যায় না । অযত্ন বিকাশকারীদের কাজ খুব সামান্য সহজ করার সুবিধাটি শেষ ব্যবহারকারীকে দেওয়া পারফরম্যান্সের দ্বারা প্রদান করা হয় না।
এরিক লিপার্ট

7
সুরক্ষা ব্যতিক্রম সম্পর্কিত: ব্যতিক্রমটিতে যত কম তথ্য তত ভাল। আমার প্রিয় উপাখ্যানটি হ'ল .NET 1.0 এর প্রাক-বিটা সংস্করণে আপনি "সি সি ফাইলের নাম নির্ধারণ করার অনুমতি নেই: foo.txt" এর মতো একটি ব্যতিক্রম বার্তা পেতে পারেন। দুর্দান্ত, বিস্তারিত ব্যতিক্রম বার্তার জন্য ধন্যবাদ!
এরিক লিপার্ট

2
আমি শেষ ব্যবহারকারীকে কোনও বিশদ ত্রুটি বার্তা না দেখানোর সাথে একমত নই। এটা তোলে আমার কি হয়েছে অনেক বার যে আমি আমার খেলা / সফ্টওয়্যার শুরু বাধা একটি রহস্যপূর্ণ ত্রুটি বার্তাটি পাবেন, কিন্তু যখন আমি google আমি সেখানে একটি সহজ কার্যসংক্রান্ত চলছে তা খুঁজুন। এই ত্রুটি বার্তা ছাড়া কাজকর্মের সন্ধানের কোনও উপায় থাকবে না। সম্ভবত "আরও বিশদ" বোতামের নীচে কেবল বিশদগুলি লুকিয়ে রাখা আরও ভাল?
ব্লুরাজা - ড্যানি পিফ্লুঘুফ্ট

2

এর উত্তর পুরোপুরি ব্যতিক্রমের উপর নির্ভর করে।

সবচেয়ে গুরুত্বপূর্ণ প্রশ্নটি হ'ল "সমস্যাটি কে সমাধান করতে পারে?" আপনি যখন কোনও ফাইল খোলার সময় যদি কোনও ফাইল সিস্টেমের ত্রুটির কারণে ব্যতিক্রম ঘটে থাকে তবে শেষ বার্তাটিকে এই বার্তাটি দেওয়ার অর্থটি বোধগম্য হতে পারে। বার্তাটিতে ত্রুটিটি কীভাবে ঠিক করা যায় সে সম্পর্কে আরও তথ্য থাকতে পারে। আমি আমার কাজের একটি নির্দিষ্ট কেস সম্পর্কে ভাবতে পারি যেখানে আমার একটি প্লাগইন সিস্টেম ছিল যা ডিএলএল লোড করে। যদি কোনও ব্যবহারকারী ভুল প্লাগইন লোড করতে কমান্ড লাইনে একটি টাইপ করেন তবে অন্তর্নিহিত সিস্টেম ত্রুটি বার্তায় সমস্যাটি সমাধান করার অনুমতি দেওয়ার জন্য দরকারী তথ্য রয়েছে।

বেশিরভাগ সময়, ব্যবহারকারী দ্বারা একটি অনাবৃত ব্যতিক্রম ঠিক করা যায় না। তাদের বেশিরভাগ কোডে পরিবর্তন আনতে জড়িত। এই ক্ষেত্রে, বার্তার গ্রাহক স্পষ্টভাবে একটি বিকাশকারী।

ধরা পড়া ব্যতিক্রমগুলির ক্ষেত্রে আরও জটিল কারণ আপনার ব্যতিক্রমটি সঠিকভাবে প্রক্রিয়া করার এবং আরও বন্ধুত্বপূর্ণ একটি ছুঁড়ে ফেলার সুযোগ রয়েছে। আমি যে স্ক্রিপ্টিংয়ের ভাষা লিখেছি তা ব্যতিক্রম ছুঁড়ে দিয়েছে যার বার্তাটি বিকাশকারীদের পক্ষে খুব স্পষ্টভাবে উদ্দেশ্যপূর্ণ। তবে, স্ট্যাকটি আনওয়াউন্ড হিসাবে, আমি স্ক্রিপ্টিং ভাষার মধ্যে থেকে ব্যবহারকারী-পঠনযোগ্য স্ট্যাকের চিহ্নগুলি যুক্ত করেছি। আমার ব্যবহারকারীরা খুব কমই বার্তাটি ছড়িয়ে দিতে পারে, তবে তারা তাদের স্ক্রিপ্টের স্ট্যাক ট্রেসটি দেখতে পারে এবং 95% সময়ের মধ্যে কী ঘটেছিল তা বুঝতে পারে। বাকি 5% এর জন্য, যখন তারা আমাকে ডেকেছিল, আমাদের কাছে কেবল স্ট্যাক ট্রেসই ছিল না, তবে ভুল কী তা নির্ধারণ করতে আমাকে সহায়তা করার জন্য একটি বিকাশকারী-প্রস্তুত বার্তা ছিল।

সব মিলিয়ে আমি ব্যতিক্রম বার্তাকে অজানা সামগ্রী হিসাবে বিবেচনা করি। আরও প্রবাহিত কেউ, যিনি বাস্তবায়ন সম্পর্কে আরও জানতেন, তিনি আমার সফ্টওয়্যারটিকে একটি ব্যতিক্রম হস্তান্তর করেছেন। কখনও কখনও আমার মনে হয় যে অজানা সামগ্রীটি শেষ ব্যবহারকারীর পক্ষে কার্যকর হবে, কখনও কখনও তা হয় না।


1
"আপনি যখন কোনও ফাইল খোলার সময় যদি কোনও ফাইল সিস্টেম ত্রুটির কারণে ব্যতিক্রম ঘটে থাকে তবে শেষ বার্তাটিকে এই বার্তাটি দেওয়ার অর্থটি বুদ্ধিমান হতে পারে": তবে আপনি যখন ফাইল সিস্টেম ত্রুটি নিক্ষেপ করবেন তখন আপনি প্রসঙ্গটি জানেন না: এটি ব্যবহারকারীর ক্রিয়া হতে পারে, বা সম্পূর্ণ সম্পর্কিত নয় এমন কিছু (যেমন আপনার অ্যাপ্লিকেশনটি কিছু কনফিগারেশনের ব্যাকআপ তৈরি করছে, এমনকি ব্যবহারকারী এটি লক্ষ্য না করেই)। এর থেকে বোঝা যায় যে আপনার একটি ট্রাই / ক্যাচ ব্লক থাকবে যা একটি ত্রুটি বার্তা দেখায় যা ব্যতিক্রম বার্তাটি সরাসরি দেখানো থেকে খুব আলাদা ।
আর্সেনী মরজেনকো

@ মাইনমা ​​আপনি হয়ত প্রসঙ্গটি স্পষ্টভাবে জানেন না, তবে এখানে প্রচুর ইঙ্গিত রয়েছে। উদাহরণস্বরূপ, যদি তারা কোনও ফাইল খোলার প্রক্রিয়ায় থাকে এবং ব্যতিক্রমটি "আইওআরআর: অনুমতি প্রত্যাখ্যান করা হয়েছে", তবে ব্যবহারকারীরা 2 এবং 2 একসাথে রেখে প্রশ্নটি ফাইলটি খুঁজে বের করতে পারে এমন যুক্তিযুক্ত সুযোগ রয়েছে। আমার প্রিয় সম্পাদক এটি করেন - এটি একটি ডায়ালগ বাক্সে ব্যতিক্রম পাঠ্যকে আউটপুট দেয়, কোনও ফ্লাফ নেই। অন্যদিকে, যদি আমি আমার অ্যাপ্লিকেশনটি লোড করছি এবং একগুচ্ছ চিত্র লোড করার সময় "অনুমতি অস্বীকার" পেয়েছি, তবে ব্যবহারকারীরা তথ্য দিয়ে কিছু করতে পারে বলে ধরে নেওয়া খুব কম যুক্তিযুক্ত নয়।
কর্ট অ্যামোন -

আপনার বক্তব্যটির পক্ষে যুক্তি দিয়ে, আমি কোনও ব্যবহারকারীকে নুলারফেরান এক্সেপশন দেখানোর কোনও মূল্য দেখিনি, অন্যথায় এই বার্তাটি প্রদর্শনের নিছক কাজটি দেখায় যে কীভাবে পুনরুদ্ধার করা যায় তা আপনার সফ্টওয়্যারটির কোনও ইঙ্গিত ছিল না ! এই ব্যতিক্রম বার্তাটি কোনও শেষ ব্যবহারকারীর পক্ষে কার্যকর নয়।
কর্ট অ্যামোন -
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.