ত্রুটি পরিচালনার ক্ষেত্রে - কোনও প্রোগ্রামের ত্রুটিগুলি ব্যর্থ হওয়া বা চুপচাপ সেগুলি উপেক্ষা করা উচিত


20

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

ব্যতিক্রম হ্যান্ডলিংয়ের জন্য, আমি দুটি পন্থা দেখতে পাচ্ছি। আমি কি প্রোগ্রামটি লিখি যাতে এটি:

  • কিছু ভুল হলে বা একটি ঠ্যাং সঙ্গে ব্যর্থ হয়
  • এটি কেবল ত্রুটি উপেক্ষা করে চালিয়ে যাওয়া উচিত, ডেটা অখণ্ডতার ব্যয়েই?

কোন ব্যবহারকারীর যুক্তিসঙ্গতভাবে আশা করা উচিত?
ব্যতিক্রমগুলি পরিচালনা করার আরও ভাল উপায় কি আছে?

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



সম্পাদনা +1 করার কি কোনও উপায় আছে? ;) ওহ, অপেক্ষা করুন, আমি আপনাকে অনুসরণ করি। অবশ্যই, করবেন :)
অ্যারলেন বেলার

2
"ব্যবহারকারী কোন যুক্তিসঙ্গত যুক্তিসঙ্গতভাবে আশা করবে?"। আপনি কি আপনার একজনকে জিজ্ঞাসা করার চেষ্টা করেছেন? হলওয়ে ব্যবহারযোগ্যতা পরীক্ষাটি উল্লেখযোগ্যভাবে কার্যকর হতে পারে। Blog.openhallway.com/?p=146
ব্রায়ান ওকলে

আমার কোনও ব্যবহারকারীর নেই :)
অ্যারলেন বেলার

উত্তর:


34

আপনার প্রোগ্রামটির সাথে দেখা এমন কোনও ত্রুটি কখনও উপেক্ষা করা উচিত নয়। সর্বাধিক সর্বনিম্ন, আপনি নোটিফিকেশনের জন্য কোনও ফাইল বা অন্য কোনও মেকানিজমে এটি লগ করতে হবে। সেখানে পারে অনিয়মিত পরিস্থিতিতে যেখানে আপনি একটি ত্রুটি উপেক্ষা কিন্তু করতে চাইবেন হতে এটা নথি! catchএটি খালি কেন তা ব্যাখ্যা না করে কোনও খালি ব্লক লিখবেন না ।

প্রোগ্রামটি ব্যর্থ হওয়া উচিত কিনা তা প্রসঙ্গে অনেক কিছু নির্ভর করে। আপনি যদি ত্রুটিটি গ্রেফতার করে পরিচালনা করতে পারেন তবে এটির জন্য যান। যদি এটি একটি অপ্রত্যাশিত ত্রুটি হয় তবে আপনার প্রোগ্রামটি ক্রাশ হবে। এটি ব্যতিক্রম হ্যান্ডলিংয়ের মৌলিক বিষয়।


18
A -1 পরোয়ানা দেওয়ার পক্ষে যথেষ্ট নয়, তবে "কখনই নয়" একটি শক্ত শব্দ এবং এমন পরিস্থিতি রয়েছে যেখানে ত্রুটি উপেক্ষা করা হ'ল কর্মের সঠিক পথ। উদাহরণস্বরূপ, এইচডিটিভি সম্প্রচারের সম্প্রচার ডিকোড করার সফ্টওয়্যার। আপনি যখন কিছু ত্রুটিগুলির মুখোমুখি হন, যা আপনি প্রায়শই ঘটাবেন, আপনি যা করতে পারেন তা হ'ল তা এড়িয়ে যাওয়া এবং পরে কী ঘটে তা ডিকোডিং করা।
42-

1
@ ওয়াটসিসনাম: সত্য, তবে আপনি কেন এড়িয়ে চলেছেন তা স্পষ্টভাবে নথিভুক্ত করা উচিত । আপনার মন্তব্য বিবেচনা করার জন্য আপডেট উত্তর।
মার্কো ফিসেট

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

@ ডক্কাট: মূল বক্তব্যটি ভুল মূল্যবোধের সাথে চালিয়ে যাওয়া না, যা একটি ভুল সমাধান দেয় (আবর্জনা ফেলা, আবর্জনা ফেলা)। ক্র্যাশিং সমস্যার সমাধান করে: এটি ব্যবহারকারীকে বিভিন্ন ইনপুট সরবরাহ করতে বা বিকাশকারীকে তাদের প্রোগ্রামটি সংশোধন করতে বাধ্য করে;)
আন্দ্রে প্যারামিস

1
@ ভাটিসনাম আমি মনে করি আপনি সেই ক্ষেত্রে আপনার "ত্রুটি" সংজ্ঞা সম্পর্কে ভাবতে চাইতে পারেন। প্রাপ্ত ডেটা ত্রুটিগুলি কোনও সফ্টওয়্যার প্রোগ্রামের কাঠামো এবং প্রয়োগের ক্ষেত্রে ত্রুটি হিসাবে একই জিনিস নয়।
joshin4colours

18

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

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

অন্যদিকে, যদি পদক্ষেপ 3-এ ত্রুটিটি ব্যবহারকারীর মুখে সমস্ত কিছু ফুটিয়ে তোলে এবং SOMETHING WENT BADLY WRONG IN STEP 3!(বা এর প্রযুক্তিগত সমতুল্য, একটি স্ট্যাক ট্রেস) বলে ত্রুটি উত্পন্ন করে তবে ফলাফলটি একই - ব্যবহারকারী আপনার সম্পর্কে অভিযোগ করছেন প্রোগ্রামটি সঠিকভাবে কাজ করছে না - তবে আপনি ঠিক করতে পারেন যে আপনি ঠিক করতে গেলে কোথায় দেখা শুরু করবেন

সম্পাদনা: মন্তব্যের প্রতিক্রিয়াতে, যদি আপনি অনুমান করেছিলেন এমন কিছু ভুল হয়ে যায় এবং কীভাবে পরিচালনা করতে হয় তবে তা আলাদা। উদাহরণস্বরূপ, কোনও ত্রুটিযুক্ত বার্তা পাওয়ার ক্ষেত্রে, এটি কোনও প্রোগ্রাম ত্রুটি নয়; এটি "ব্যবহারকারী খারাপ ইনপুট সরবরাহ করেছেন যা বৈধতা ব্যর্থ হয়েছে।" সেখানে যথাযথ প্রতিক্রিয়া হ'ল ব্যবহারকারীকে বলতে হবে যে তিনি আপনাকে অবৈধ ইনপুট দিচ্ছেন, যা এটি করছেন যা দেখে মনে হচ্ছে doing সেরকম কোনও ক্ষেত্রে স্ট্যাক ট্রেস ক্র্যাশ ও জেনারেট করার দরকার নেই।


শেষ বার্তাটি কীভাবে ফিরে আসার বিষয়ে, বা কোনও রেকভারিং লুপের ক্ষেত্রে, কেবলমাত্র সেই বার্তাটি ফেলে দেওয়া এবং পরবর্তীটিতে যেতে to
অ্যারলেন বেলার

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

যদি আমি এটির প্রত্যাশা করি, যেমন বিকৃত বার্তাগুলি যেমন ডিসিরিয়ালেশন রোধ করে। কিছু ক্ষেত্রে, আমি ব্যতিক্রমটি সিরিয়ালাইজ করেছি এবং তারটি পেরিয়ে আবার পাঠিয়েছি। সেখানে, প্রশ্নটিতে আমার সম্পাদনা দেখুন।
অ্যারলেন বেলার

@ অ্যারলেন: যদি আপনি এটির পূর্বাভাস দিয়ে থাকেন এবং আপনি নিশ্চিত হন যে ত্রুটির প্রভাবগুলি কী এবং আপনি সঠিকভাবে এটি অন্তর্ভুক্ত আছেন তা আপনি জানেন know তবে তা ভিন্ন। আমার কাছে মনে হচ্ছে আপনি ত্রুটিটি পরিচালনা করছেন এবং যথাযথভাবে প্রতিক্রিয়া জানাচ্ছেন, এড়াচ্ছেন না। আমি অপ্রত্যাশিত ত্রুটিগুলি উপেক্ষা করার বিষয়ে কথা বলছিলাম , এটিই যা শুনেছিল যা আপনি জিজ্ঞাসা করছেন।
ম্যাসন হুইলারের

16

"গাট্টা" এবং "উপেক্ষা" এর মধ্যে অন্যান্য বিকল্প রয়েছে।

ত্রুটিটি যদি অনুমানযোগ্য এবং এড়ানো যায় তবে এড়াতে আপনার কোডটি পরিবর্তন করুন বা আপনার কোডটি রিফ্যাক্টর করুন।

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

যদি ত্রুটিটি অনুমানযোগ্য, অনিবার্য, এবং যখন এটি ঘটে তখন আপনি যা কিছু করতে পারেন তা ডেটা অখণ্ডতার গ্যারান্টি দিবে, তবে আপনাকে ত্রুটিটি লগ করে একটি নিরাপদে ফিরে যেতে হবে (যা অন্যরা বলেছে, ক্র্যাশ হওয়ার অর্থ হতে পারে)।

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

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

দেখুন এরিক Lippert এর চমৎকার ব্যতিক্রম-হ্যান্ডলিং নিবন্ধ ক্যাটাগোরাইজিং এবং ব্যতিক্রম হ্যান্ডলিং সম্পর্কে আরো পরামর্শের জন্য।


1
আমার মতে এখনও অবধি সেরা উত্তর।
বৃহস্পতিবারের

6

এই প্রশ্নে আমার মতামত:

একটি ভাল সূচনা নীতি দ্রুত ব্যর্থ হয়। বিশেষত, আপনার কোনও কারণ ব্যর্থতার জন্য ত্রুটি পরিচালনার কোডটি কখনই লিখতে হবে না যার জন্য আপনি সঠিক কারণটি জানেন না।

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

দ্রুত এবং ধীরে ধীরে আরও বেশি সুনির্দিষ্ট ত্রুটির শর্তটি ব্যর্থ করে আপনি কখনই ডেটা অখণ্ডতার সাথে আপস করেন না এবং স্থিরভাবে আরও স্থিতিশীল প্রোগ্রামের দিকে যান।

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

আপনি ব্যর্থতার ক্ষেত্রে সচেতন কিনা তা কম গুরুত্বের নয়। তবে যদি আপনি উদাহরণস্বরূপ এমন কোনও নেটওয়ার্ক সংযোগ নিয়ে কাজ করছেন যার জন্য আপনি নির্দিষ্ট পরিমাণ ত্রুটিযুক্ত অবস্থা জানেন তবে আপনি পুনরুদ্ধার কোড যুক্ত না করা পর্যন্ত ত্রুটি পরিচালনা পরিচালনা যুক্ত স্থগিত করুন। এটি উপরে বর্ণিত নীতিগুলির সাথে সামঞ্জস্যপূর্ণ।


6

আপনার কখনই চুপচাপ ত্রুটিগুলি উপেক্ষা করা উচিত নয় । এবং বিশেষত ডেটা অখণ্ডতার ব্যয় নয় ।

প্রোগ্রামটি কিছু করার চেষ্টা করছে। যদি এটি ব্যর্থ হয়, আপনাকে সত্যের মুখোমুখি হতে হবে এবং এটি সম্পর্কে কিছু করতে হবে। যে কিছু হবে তা অনেক কিছুর উপর নির্ভর করে।

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

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

বিজ্ঞাপন সম্পাদনা, কেবলমাত্র পার্থক্যটি হ'ল এটি হল যে আপনি ব্যবহারকারীর কাজটি করেননি তা বলার আগে ছেড়ে দেওয়ার আগে কয়েকবার চেষ্টা করার কথা বিবেচনা করা উচিত, যেহেতু আপনি আবার চেষ্টা করলে নেটওয়ার্কে ক্ষণস্থায়ী ত্রুটি থাকতে পারে যা পুনরায় পুনরায় চেষ্টা করবে না।


আপনি কি আসলেই প্রথম লাইনের শেষে একটি প্রশ্ন চিহ্ন রেখেছিলেন?
একটি সিভিএন

@ মাইকেলKjörling: নং ​​অনুলিপি-পেস্ট ত্রুটি (প্রশ্নটি থেকে সূত্রটি অনুলিপি করেছেন এবং ভুলভাবে প্রশ্ন চিহ্নটি অন্তর্ভুক্ত করেছেন)।
জান হুডেক

4

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

প্রদর্শনের উদ্দেশ্যে HDMI স্ট্রিমটি ডিকোড করার ক্ষেত্রে এটি একটি কেস। যদি স্ট্রিমটি খারাপ হয় তবে এটির জন্য চিৎকারটি যাদুকরীভাবে এটি ঠিক করবে না। এটি প্রদর্শনের জন্য আপনি যা পারেন তা করুন এবং দর্শকের পক্ষে এটি সহনীয় কিনা তা স্থির করতে পারেন।


1

আমি বিশ্বাস করি না যে কোনও প্রোগ্রাম যখনই কোনও সমস্যার মুখোমুখি হয় নিঃশব্দে তা অগ্রাহ্য করে বা হুমকির সৃষ্টি করে।

আমি আমার সংস্থার জন্য লিখি অভ্যন্তরীণ সফ্টওয়্যার দিয়ে আমি কী করি ...

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

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

আমি এড়াতে চেষ্টা করে সবচেয়ে বড় জিনিসটি ত্রুটির পরে প্রোগ্রামটি ক্র্যাশ হওয়া - পুনরুদ্ধার করতে সক্ষম না হওয়া being আমি অ্যাপ্লিকেশনটি বন্ধ না করে ব্যবহারকারীকে সর্বদা বিকল্প দেওয়ার চেষ্টা করি।

আমি বিশ্বাস করি যদি বাগ সম্পর্কে কেউ না জানে - এটি কখনই স্থির হবে না। আমি ত্রুটি পরিচালনার দৃ firm় বিশ্বাসীও যা একবার বাগ সন্ধানের পরে অ্যাপ্লিকেশনটি কাজ করতে সক্ষম করে।

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


1
আমি গুরুতর ফাংশনগুলি চালানোর আগে ব্যক্তিগতভাবে প্রচুর যাচাই করি যেগুলি ত্রুটিগুলি সীমাবদ্ধ করার চেষ্টা করে যা আমি পুরোপুরি বুঝতে পারি না এবং দরকারী ত্রুটি পরিচালনার পক্ষে সরবরাহ করতে পারি না যা বিস্তারিত তথ্য দেয়। এটি সময়ের 100% কাজ করে না, তবে আমি মনে করতে পারি না যে আমি শেষবারের মতো একটি বাগ পেয়েছিলাম যা আমাকে কয়েক ঘন্টা হারিয়ে ফেলেছিল।
জেফ

1

আমার নিজস্ব কৌশল হ'ল কোডিং ত্রুটি (বাগ) এবং রানটাইম ত্রুটির মধ্যে পার্থক্য করা এবং যথাসম্ভব কোডিং ত্রুটিগুলি তৈরি করা কঠিন করা।

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

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

জন্য রানটাইম এরর , এই ধরনের নেটওয়ার্ক বা সিরিয়াল যোগাযোগ ব্যর্থতা বা অনুপস্থিত বা দূষিত ফাইল হিসেবে যে সম্ভবত বাগ বিনামূল্যে কোডের মাধ্যমে ঘটতে পারে:

  1. লগ ত্রুটি।
  2. (Alচ্ছিক) নীরবে আবার চেষ্টা করার চেষ্টা করুন বা অন্যথায় অপারেশন থেকে পুনরুদ্ধার করুন।
  3. যদি অপারেশনটি ব্যর্থ হতে থাকে বা অপরিবর্তিতযোগ্য হয় তবে ব্যবহারকারীকে ত্রুটিটি দৃশ্যমানভাবে রিপোর্ট করুন। তারপরে উপরের মতো, ব্যবহারকারী কী করবেন তা সিদ্ধান্ত নিতে পারেন। সর্বনিম্ন বিস্ময়ের নীতিটি মনে রাখবেন , কারণ ডেটা অখণ্ডতা হ্রাস করা যদি ব্যবহারকারীকে সময়ের আগে সতর্ক না করে তবে অবাক করে দেয়।

0

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

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