আমি আপনাকে ত্রুটি নিয়ন্ত্রণের একটি সবচেয়ে অস্বাভাবিক আলোচনা দেওয়ার ইচ্ছা করি।
আমি বহু বছর আগে একটি ভাষায় একটি খুব ভাল ত্রুটি হ্যান্ডলার তৈরি করেছি এবং যদিও কিছু নাম পরিবর্তন হয়েছে, ত্রুটি প্রক্রিয়াকরণের নীতিগুলি আজ একই same আমার একটি কাস্টম বিল্ট মাল্টি-টাস্কিং ওএস ছিল এবং মেমরি ফাঁস, স্ট্যাক বৃদ্ধি বা ক্র্যাশ না করে সমস্ত স্তরে ডেটা ত্রুটিগুলি থেকে পুনরুদ্ধার করতে সক্ষম হয়েছিল। সুতরাং এরপরে কীভাবে ত্রুটিগুলি এবং ব্যতিক্রমগুলি পরিচালনা করতে হবে এবং কীভাবে সেগুলি পৃথক করে তা সম্পর্কে আমার বোঝার বিষয়টি। আমি কেবল বলব যে চেষ্টা করার অভ্যন্তরীণ কীভাবে কাজ করে সে সম্পর্কে আমার কোনও বোধগম্যতা নেই, সুতরাং কিছুটা হলেও অনুমান করছি।
ত্রুটি প্রসেসিংয়ের জন্য কভারগুলির মধ্যে প্রথম যেটি ঘটে তা হ'ল এক প্রোগ্রামের স্টেট থেকে অন্য প্রোগ্রামে ঝাঁপিয়ে পড়ে। কীভাবে হয়? আমি এটি পেতে হবে।
.তিহাসিকভাবে, ত্রুটিগুলি পুরানো এবং সহজ এবং ব্যতিক্রমগুলি আরও নতুন এবং আরও জটিল এবং সক্ষম। ত্রুটিগুলি ঠিক ততক্ষণ কাজ করে যতক্ষণ না আপনি এগুলি বুদবুদ করেন, এটি আপনার সুপারভাইজারের কাছে একটি কঠিন সমস্যা হস্তান্তর সমতুল্য।
ত্রুটিগুলি ত্রুটি সংখ্যাগুলির মতো সংখ্যা এবং কখনও কখনও এক বা একাধিক যুক্ত স্ট্রিংগুলির সাথেও হতে পারে। উদাহরণস্বরূপ, যদি কোনও ফাইল-পঠন ত্রুটি দেখা দেয় তবে আপনি এটি কী হতে পারে তা সম্ভবত রিপোর্ট করতে সক্ষম হন এবং সম্ভবত নিখুঁতভাবে ব্যর্থ হন। (হেই, এটি পুরানো দিনের মতো ক্র্যাশ হওয়া থেকে এক ধাপ up
ব্যতিক্রম সম্পর্কে প্রায়শই যা বলা হয় না তা হ'ল ব্যতিক্রমগুলি একটি বিশেষ ব্যতিক্রম স্ট্যাকের উপর স্তরযুক্ত বস্তু la এটি প্রোগ্রামের প্রবাহের জন্য একটি রিটার্ন স্ট্যাকের মতো, তবে এটি কেবল ত্রুটি চেষ্টা ও ক্যাচের জন্য একটি রিটার্ন স্টেট ধরে। (আমি তাদের ePush এবং ePop বলতাম, এবং? Abort ছিল শর্তসাপেক্ষ নিক্ষেপ যা ইপপ হবে এবং সেই স্তরে ফিরে আসবে, যদিও অ্যাবার্ট পুরো মারা যাবেন বা প্রস্থান করতেন))
স্ট্যাকের নীচে প্রাথমিক কলার সম্পর্কিত তথ্য রয়েছে, যখন বাহ্যিক চেষ্টা শুরু হয়েছিল তখন যে অবস্থাটি রাষ্ট্র সম্পর্কে জানে সেই অবজেক্টটি যা আপনার প্রোগ্রাম শুরু হওয়ার সময় প্রায়শই ঘটে। উপরের অংশে বা স্ট্যাকের পরবর্তী স্তরটিতে বাচ্চা হওয়া এবং পিতা-মাতার নীচে থাকা পরবর্তী অভ্যন্তরীণ চেষ্টা / ক্যাপ ব্লকের ব্যতিক্রম বিষয় object
আপনি যদি চেষ্টা করে দেখতে চেষ্টা করেন তবে আপনি আভ্যন্তরীণ চেষ্টাটি বহিরাগত চেষ্টাটির উপরে রেখে দিচ্ছেন। যখন অভ্যন্তরীণ চেষ্টাতে ত্রুটি দেখা দেয় এবং হয় অভ্যন্তরীণ ক্যাচটি এটি পরিচালনা করতে পারে না বা ত্রুটিটি বাইরের চেষ্টাতে ফেলে দেওয়া হয়, তবে এটির ত্রুটিটি পরিচালনা করতে পারে কিনা তা নিয়ন্ত্রণ করার জন্য নিয়ন্ত্রণটি বাইরের ক্যাচ ব্লক (অবজেক্ট) এ পৌঁছে দেওয়া হয়, অর্থাৎ আপনার সুপারভাইজার
সুতরাং এই ত্রুটিযুক্ত স্ট্যাকটি যা যা করে তা হ'ল প্রোগ্রাম প্রবাহ এবং সিস্টেমের অবস্থা চিহ্নিত এবং পুনরুদ্ধার করতে সক্ষম হওয়া, অন্য কথায়, এটি কোনও প্রোগ্রামকে যখন সমস্যাগুলি ভুল হয়ে যায় তখন অন্যদের (ডেটা) জন্য জিনিসগুলি ফেরত স্ট্যাক ক্র্যাশ না করে এবং বিশৃঙ্খলা না করে allows সুতরাং এটি মেমোরি বরাদ্দ পুলগুলির মতো অন্য যে কোনও সংস্থার অবস্থাও সংরক্ষণ করে এবং তাই ধরা পড়ার পরে এটি সেগুলি পরিষ্কার করতে পারে। সাধারণভাবে এটি খুব জটিল জিনিস হতে পারে এবং এজন্য ব্যতিক্রম হ্যান্ডেলিং প্রায়শই ধীর হয়। সাধারণভাবে বেশ কয়েকটি রাজ্যের এই ব্যতিক্রম ব্লকগুলিতে যাওয়া দরকার।
সুতরাং একটি চেষ্টা / ক্যাচ ব্লক সাজানোর একটি পরিস্থিতি সেট করে যাতে অন্য সমস্ত গোলমাল হয়ে যায় তবে ফিরে আসতে সক্ষম হবে। এটি পিতামাতার মতো। যখন আমাদের জীবন বিভ্রান্ত হয় তখন আমরা আমাদের পিতামাতার কোলে ফিরে যেতে পারি এবং তারা এগুলি আবার ঠিক করে দেবে।
আশা করি আমি তোমাকে হতাশ করিনি।
Errors are generally unrecoverable
<- আসলে এটি সত্য নয়।E_ERROR
এবংE_PARSE
দুটি সর্বাধিক প্রচলিত অপরিবর্তনযোগ্য ত্রুটি (অন্য কয়েকজন রয়েছে) তবে আপনি দেবদেবীতে যে ত্রুটিগুলি দেখবেন সেগুলির সিংহভাগ পুনরুদ্ধারযোগ্য (E_NOTICE
,E_WARNING
ইত্যাদি)। দুর্ভাগ্যক্রমে পিএইচপি এর ত্রুটি পরিচালনার একটি সম্পূর্ণ জগাখিচুড়ি - সব ধরণের জিনিস অকারণে ত্রুটিগুলি ট্রিগার করে (উদাহরণস্বরূপ, ফাইল সিস্টেমের বেশিরভাগ কার্যকারিতা)। সাধারণ ব্যতিক্রমগুলি