কোনও সি ++ প্রোগ্রামের সমস্ত ব্যতিক্রম ধরা এবং ব্যতিক্রমগুলি অতীতের প্রধান () কে বুদ্বুদ করা থেকে বিরত রাখা উচিত?


29

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

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

(যে সময়ে কেন এটি আরও সুস্পষ্ট ছিল না এমন ভেবে কারও জন্য: প্রকল্পটি একাধিক প্রক্রিয়া থেকে একাধিক ফাইলে প্রচুর পরিমাণে আউটপুট তৈরি করেছিল যা কোনও প্রকারের aborted (core dumped)বার্তাকে কার্যকরভাবে অস্পষ্ট করে দেয় এবং এই বিশেষ ক্ষেত্রে, মূল ডাম্পগুলির ময়না তদন্ত করা হয়নি) একটি গুরুত্বপূর্ণ ডিবাগিং কৌশল না কারণ কোর ডাম্পগুলিকে খুব বেশি চিন্তা-ভাবনা করা হত না with একটি প্রোগ্রাম নিয়ে ইস্যুগুলি সাধারণত দীর্ঘকালীন প্রোগ্রামের মাধ্যমে সময়ের সাথে অনেক ইভেন্ট থেকে জমে থাকা রাষ্ট্রের উপর নির্ভর করে না বরং একটি স্বল্প সময়ের প্রোগ্রামের প্রাথমিক ইনপুটগুলি (< 1 ঘন্টা) তাই আরও তথ্য পেতে একটি ডিবাগ বিল্ড থেকে একই ইনপুট সহ একটি প্রোগ্রাম পুনরায় চালু করা বা কোনও ডিবাগারে পুনরায় চালু করা আরও ব্যবহারিক ছিল))

কেবলমাত্র ব্যতিক্রমগুলি রোধ করা থেকে বিরত রাখার উদ্দেশ্যে ব্যতিক্রমগুলি ধরার কোনও বড় সুবিধা বা অসুবিধা আছে কিনা তা নিয়ে আমি বর্তমানে নিশ্চিত main()

অতীতকে বাধা দেওয়ার জন্য যে ছোট সুবিধাটি আমি ভাবতে পারি main()তা হ'ল এটির ফলাফলটি std::exception::what()টার্মিনালে মুদ্রণের কারণ ঘটায় (কমপক্ষে লিনাক্সে জিসিসি সংকলিত প্রোগ্রাম সহ)। অন্যদিকে, std::exceptionফলাফলটি থেকে প্রাপ্ত সমস্ত ব্যতিক্রম এবং ফলাফল মুদ্রণের পরিবর্তে এটি অর্জন তুচ্ছ std::exception::what()এবং যদি ব্যতিক্রম থেকে প্রাপ্ত কোনও বার্তা মুদ্রণ করা বাঞ্ছনীয় হয় std::exceptionতবে এটি মুদ্রণের জন্য রেখে যাওয়ার আগে অবশ্যই ধরা main()পড়তে হবে বার্তা.

অতীতে বুদবুদ হওয়ার জন্য ব্যতিক্রমীদের অনুমতি দেওয়ার জন্য আমি যে পরিমিত অসুবিধা ভাবতে পারি main()তা হ'ল অযাচিত কোর ডাম্পগুলি উত্পন্ন হতে পারে। প্রচুর পরিমাণে মেমরি ব্যবহার করার প্রক্রিয়াটির জন্য এটি একটি উপদ্রব হতে পারে এবং কোনও প্রোগ্রামের কোর ডাম্পিং আচরণ নিয়ন্ত্রণের জন্য ওএস-নির্দিষ্ট ফাংশন কলগুলির প্রয়োজন হয়। অন্যদিকে, যদি কোনও মূল ডাম্প এবং প্রস্থানটি পছন্দসই হয় তবে পরিবর্তে এটি কল করে যে কোনও সময় অর্জন করা যেতে পারে std::abort()এবং কল ডাম্প ছাড়াই কোনও প্রস্থান যে কোনও সময় কল করেই অর্জন করা যেতে পারে std::exit()

উপাখ্যান্তভাবে, আমি মনে করি না যে what(): ...ক্র্যাশ হওয়ার পরে আমি কোনও বিস্তৃত প্রোগ্রাম দ্বারা মুদ্রিত ডিফল্ট বার্তাটি দেখেছি ।

সি ++ ব্যতিক্রমকে অতীতকে বাধা দেওয়ার পক্ষে বা বিপক্ষে কী জোর তর্ক রয়েছে main()?

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




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

মাল্টি-থ্রেড প্রোগ্রামের জন্য জিনিসগুলি আরও জটিল বা আরও বহিরাগত হতে পারে (
আর্ট

1
অ্যারিয়েন 5 এর সফ্টওয়্যার ছেলেরা অবশ্যই কামনা করছে যে তারা প্রথম লঞ্চের সময় সমস্ত ব্যতিক্রম ধরা পড়েছিল ...
এরিক টাওয়ার

উত্তর:


25

ব্যতিক্রমকে অতীতকে মূলত ফেলে দেওয়া সহ একটি সমস্যা হ'ল প্রোগ্রামটি একটি কল দিয়ে শেষ হবে std::terminateযার কল্পনা করতে হবে ডিফল্ট আচরণ std::abort। এটি কেবলমাত্র প্রয়োগের সংজ্ঞায়িত যদি কল terminateকরার আগে স্ট্যাক আনওয়ানডিং করা হয়ে থাকে যাতে আপনার প্রোগ্রামটি কোনও একক ডেস্ট্রাক্টরকে কল না করেই শেষ হতে পারে! যদি আপনার কাছে এমন কিছু সংস্থান থাকে যা সত্যই একজন ডেস্ট্রাক্টর কল দ্বারা পুনরুদ্ধার করা প্রয়োজন, আপনি একটি আচারের মধ্যে রয়েছেন ...


12
যদি আপনার এমন কিছু সংস্থান থাকে যা সত্যই একজন ডেস্ট্রাক্টর কল দ্বারা পুনরুদ্ধার করা প্রয়োজন, আপনি একটি আচারের মধ্যে রয়েছেন ... => প্রদত্ত যে (দুর্ভাগ্যক্রমে) সি ++ যথেষ্ট ক্র্যাশ-প্রবণ, এবং এটি ওএস হত্যা করার সিদ্ধান্ত নিতে পারে তা উল্লেখ ছাড়াই আপনার প্রোগ্রাম যে কোনও সময় (উদাহরণস্বরূপ ইউনিক্সে ওওএম হত্যাকারী), আপনার প্রোগ্রামটি (এবং এর পরিবেশ) ক্র্যাশগুলি সমর্থন করার জন্য তৈরি করা দরকার।
ম্যাথিউ এম।

@MatthieuM। আপনি কি বলছেন যে ডেস্ট্রাক্টররা রিসোর্স ক্লিনআপের জন্য ভাল জায়গা নয় যা ক্রাশের সময়ও হওয়া উচিত?
প্রেক্সোলাইটিক

6
@ প্রক্সিওলিটিক: আমি বলছি যে সমস্ত ক্র্যাশগুলি স্ট্যাকটি উন্মুক্ত std::abortকরে না , উদাহরণস্বরূপ এটি ব্যর্থ হয় না এবং এইভাবে ব্যর্থতার দাবিও হয় না। এটি আরও লক্ষণীয় যে আধুনিক ওএসে, ওএস নিজেই প্রচুর সংস্থান (মেমরি, ফাইল হ্যান্ডলগুলি, ...) প্রসেস আইডির সাথে আবদ্ধ করে পরিষ্কার করবে। অবশেষে, আমি "গভীরতার প্রতিরক্ষা" এও ইঙ্গিত দিয়েছিলাম: এটি আশা করা অবিশ্বাস্য যে অন্য সমস্ত প্রক্রিয়াগুলি বাগ-প্রুফ এবং সর্বদা তারা যে সম্পদগুলি অর্জন করেছে তা ছেড়ে দেবে (সেশনস, ফাইলগুলি রাইটিং সমাপ্তভাবে শেষ করা, ...) আপনার জন্য পরিকল্পনা করতে হবে এটি ...
ম্যাথিউ এম।

3
@ প্রেক্সিওলিটিক না, কোনও পাওয়ার ব্যর্থতার সময় আপনার সফ্টওয়্যারটির ডেটা দূষিত করার দরকার নেই । এবং যদি আপনি এটি পরিচালনা করতে পারেন তবে আপনি কোনও নিয়ন্ত্রণহীন ব্যতিক্রমের পরে ডেটা দূষিত না করে পরিচালনা করতে পারেন।
ব্যবহারকারী 253751

1
@ প্রক্সিওলিটিক: আসলে, এর অস্তিত্ব নেই। আপনি WM_POWERBROADCASTবার্তাটি শুনতে চাইবেন । এটি কেবল তখনই কাজ করে যদি আপনার কম্পিউটারটি ব্যাটারি চালিত হয় (আপনি যদি কোনও ল্যাপটপ বা কোনও ইউপিএস ব্যবহার করেন)।
ব্রায়ান

28

ব্যতিক্রমগুলি এড়াতে না দেওয়ার মূল কারণ mainহ'ল অন্যথায় আপনি কীভাবে আপনার ব্যবহারকারীদের কাছে সমস্যাটি প্রতিবেদন হয় তা নিয়ন্ত্রণ করার সমস্ত সম্ভাবনা হারাবেন।

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

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


আপনি কি নিশ্চিত যে সি ++ ব্যতিক্রমের ডিফল্ট আচরণটি main() ওএসের সাথে অনেক কিছু করতে পারে? ওএস সি ++ এর কিছুই জানতে পারে না। আমার অনুমান ছিল যে এটি প্রোগ্রামের কোথাও সংকলক সন্নিবেশ করে কোড দ্বারা নির্ধারিত হয়।
প্রেক্সোলাইটিক

5
@ প্রেক্সিওলিটিক: এটি আরও বেশি যে কোনও প্রোগ্রাম অপ্রত্যাশিতভাবে শেষ হওয়ার পরে ওএস কনভেনশনগুলি সেট করে এবং সংকলকরা এই কনভেনশনগুলি সম্পাদন করার জন্য কোড উত্পন্ন করে। তল লাইনটি হ'ল যখনই যুক্তিসঙ্গতভাবে সম্ভব সম্ভব অপ্রত্যাশিত প্রোগ্রামের সমাপ্তি এড়ানো উচিত।
বার্ট ভ্যান ইনজেন শেেনা

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

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

11

টিএল; ডিআর : স্পেসিফিকেশন কী বলে?


একটি প্রযুক্তিগত পথ ...

যখন কোনও ব্যতিক্রম নিক্ষেপ করা হয় এবং কোনও হ্যান্ডলার তার জন্য প্রস্তুত না হয়:

  • এটি বাস্তবায়ন সংজ্ঞায়িত করা হয় যে স্ট্যাকটি অবিরাম
  • std::terminate বলা হয়, যা পূর্বনির্ধারিতভাবে বাতিল হয়
  • আপনার পরিবেশ সেটআপের উপর নির্ভর করে, গর্ভপাত বাতিল করা ক্র্যাশ প্রতিবেদনটি পিছনে ছেড়ে দিতে পারে বা নাও করতে পারে

পরেরটি খুব কদাচিৎ বাগের জন্য দরকারী হতে পারে (কারণ এগুলি পুনরুত্পাদন করা একটি সময়-অপচয় প্রক্রিয়া)।


সমস্ত ব্যতিক্রম ধরা বা না তা শেষ পর্যন্ত স্পেসিফিকেশনের বিষয়:

  • এটি কীভাবে ব্যবহারকারীর ত্রুটিগুলি রিপোর্ট করবেন তা নির্দিষ্ট করা হয়েছে? (ভুল মুল্য, ...)
  • এটি কীভাবে কার্যকরী ত্রুটিগুলি রিপোর্ট করবেন তা নির্দিষ্ট করা হয়েছে? (লক্ষ্য ডিরেক্টরি অনুপস্থিত, ...)
  • এটি কীভাবে প্রযুক্তিগত ত্রুটিগুলি রিপোর্ট করবেন তা নির্দিষ্ট করা হয়েছে? (জোর দিয়ে গুলি চালানো, ...)

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

কেবল প্রযুক্তিবিদদের দ্বারা ব্যবহার করার জন্য দ্রুত একসাথে ছুঁড়ে ফেলা প্রোগ্রামগুলির জন্য (আপনি, আপনার সতীর্থ), ঠিক আছে। আমি প্রতিবেদনটি পেতে আপনার প্রয়োজনের উপর নির্ভর না করে এটিকে ক্রাশ এবং পরিবেশ সেটআপ করার পরামর্শ দিচ্ছি।


1
এই. সিদ্ধান্ত গ্রহণকারী কারণগুলি মূলত সি ++ এর আওতার বাইরে।
মার্টিন বা

4

আপনি যে ব্যতিক্রমটি ধরা পড়ে তা আপনাকে একটি দুর্দান্ত ত্রুটি বার্তা প্রিন্ট করার বা ত্রুটি থেকে পুনরুদ্ধার করার চেষ্টা করে (সম্ভবত কেবলমাত্র অ্যাপ্লিকেশনটি পুনরায় চালু করে)।

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

সুতরাং এটি একটি বাণিজ্য বন্ধ।


4

যে মুহুর্তে আপনি জানেন যে আপনাকে গর্ভপাত করতে হবে, এগিয়ে যান এবং std::terminateআরও কোনও ক্ষতি কমাতে ইতিমধ্যে কল করুন call

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

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

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


1

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

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

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

তাই আপাতত, আমি চাই আমার প্রোগ্রামগুলি সমস্ত দিকে শীর্ষে এবং ক্র্যাশ হয়ে যায়। ভবিষ্যতে, আমি আমার সমস্ত ব্যতিক্রম কৃপণভাবে খেতে চাইব - তবে আমি যদি তাদের জন্য আমার কাজ করতে পারি তবে তা নয়।

আপনি যদি আগ্রহী হন তবে স্থানীয় ক্রাশ ডাম্প সম্পর্কে এখানে আরও পড়তে পারেন: ব্যবহারকারী-মোড ডাম্প সংগ্রহ করা


-6

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

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

ক্রাশিং কঠোরভাবে অপেশাদার ঘন্টা।


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

1
@ প্রতিলিপি: না: আপনি সর্বদা ব্যতিক্রমটি ধরতে এবং পরিচালনা করতে পারেন।
জর্জিও

5
আপনি যদি এটি পরিচালনা করতে চান তবে আপনি সম্ভবত এটির আগেই এটি পরিচালনা করবেন main। আপনি যদি এটি পরিচালনা করতে না জানেন তবে আপনার ভান করার বিষয়টি অবশ্যই একটি ভয়ঙ্কর বাগ g
উত্সাহকটি

8
তবে ক্র্যাশ সম্পূর্ণরূপে অযৌক্তিক এবং অগ্রহণযোগ্য => অকেজো বৈশিষ্ট্যগুলিতে কাজ করা সময় অযৌক্তিক: ক্র্যাশ করা কেবল তখনই বিবেচিত হয় যদি এটি ব্যবহারকারীর পক্ষে গুরুত্বপূর্ণ, যদি তা না করে তবে ক্র্যাশ করে দেওয়া (এবং একটি স্মৃতি ডাম্প সহ ক্র্যাশ রিপোর্ট পাওয়া)) আরও অর্থনৈতিক।
ম্যাথিউ এম।

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