ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে অপ্রত্যাশিত ইভেন্ট বা ঘটনা কিভাবে হ্যান্ডেল করবেন?








আজকে আলোচনা করব ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে কিভাবে Exception হ্যান্ডেল করতে হয় । ডার্ট ল্যাঙ্গুয়েজ কে Java, C++, C#, Python এর মত Exception Handling Facilities দিয়ে ডিজাইন করা হয়েছে । আচ্ছা! তাহলে এই Exception জিনিসটা আবার কি ? এক কথায়- Exception হল প্রোগ্রামরের একটি অপ্রত্যাশিত ইভেন্ট বা ঘটনা যা কোনও প্রোগ্রাম কার্যকর করার সময় ঘটে। আর প্রোগ্রামের যেখানেই এই Exception ঘটে, কম্পাইলার প্রোগ্রামকে সেখানেই বন্ধ করে দেয়। যা সফটওয়্যার ডেভেলপমেন্টের ক্ষেত্রে মোটেও কাম্য নয়। তাহলে প্রোগ্রামে এই অপ্রত্যাশিত ইভেন্ট বা ঘটনা যদি ঘটে, সেটা কিভাবে মোকাবেলা করব ? প্রোগ্রাম এ সম্ভাব্য কোনও ত্রুটি মোকাবেলার জন্য আমরা ঐ প্রোগ্রাম কে ভিন্ন তিনটি ব্লক এ বিবক্ত করব । আর ব্লক তিনটি হল -

  1. Try Block
  2. Catch Block
  3. Finally Block
 Syntax:



এখন আসুন জেনে নেই এই ব্লক গুলোর কিভাবে কাজ করে

1. Try block :- এই ব্লক এ আমরা সম্ভাব্য ত্রুটি ঘটতে পারে, এমন প্রোগ্রাম এর operation করব। যদি program কোন ধরনের Error দেখায় , তাহলে Try Block সেটা কে encounter করবে এবং ঐ exception কে catch block এ থ্রো করবে।

2. Catch Block :-
Try Block
এ যদি কোন exception থাকে তাহলে catch block সে কোড catch করবে এবং সেটা কে হ্যাণ্ডেল করবে । আর যদি try block এ কোন এরর না থাকে, তাহলে Catch block কিছুই করবে না।
3. Finally Block :- Finally Block এ এমন কোড রাখা হয় যেটা সবসময় কাজ করবে। অথাৎ প্রোগ্রামে কোন Error ধরা পড়ুক কিনবা না পড়ুক Finally block এর ভিতরে কোড execute হবে ।
মনে রাখা ভাল, Try - Catch block আমাদের প্রোগ্রামের Syntax জনিত কোন Error হ্যান্ডেল করবে না । Try - Catch block শুধুমাত্র Runtime এরর কে হ্যান্ডেল করবে। আর ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজে এই ধরনের Error গুলো হল -

  1. DeferredLoadException
  2. FormatException
  3. IntegerDivisionByZeroException
  4. IOException
  5. IsolateSpawnException
  6. Timeout etc

আসুন একটি উদাহরণ দেখে নেই -


Output: 



উদাহরনের কোডটি যদি আমারা লক্ষ্য করি, তাহলে এই প্রোগ্রামটি "Hello Bangladesh" প্রিন্ট statement টিকে execute করেছে  । তারপর যখন ( var result = 100 ~/ 0 ) statement এ আসবে তখন প্রোগ্রামটি (IntegerDivisionByZeroException) genarate করেছে  । কারণ আমরা জানি ম্যাথমেটিক্যালি কোন ইন্টিজার সংখ্যা কে শূন্য দ্বারা ভাগ করা যায় না । যেহেতু ( var result = 100 ~/ 0 ) statement এসে প্রোগ্রামটি এক্সেপশন জেনারেট করবে এবং প্রোগ্রামটিকে সেখানে থামিয়ে দিবে সেহেতু "Program Terminated" প্রিন্ট স্টেটমেন্টটি এক্সিকিউট হবে না। যা সফটওয়্যার ডেভেলপমেন্টের ক্ষেত্রে মোটেও কাম্য নয়৷ আর প্রোগ্রামের এইসব Exception কে মোকাবেলা করতে আমরা Try-Catch Block ব্যবহার করব।  তাহলে উপরের প্রোগ্রামটিকে যদি আমরা Try-Catch ব্লক দিয়ে হ্যান্ডেল করি, তাহলে প্রোগ্রামটি হবে
 

Output: 


উদাহরনটিতে আমরা যে লাইনে / যে কোডটুকু Exception তৈরী করেছে সেই কোডটুকুকে try block এ রেখেছি। এখন Try block প্রোগ্রামটি Execute হওয়ার সময় সেটিকে রান করানোর চেষ্টা করেছে, যেহেতু ইন্টিজার ভেলু কে শূন্য দ্বারা ভাগ করা সম্ভব নয়, সেহেতু try block exception টিকে catch block এর নিকট throw করেছে। catch block সেটাকে হ্যান্ডেল করে পরবর্তী কোডকে Execute করেছে। যার ফলে সম্পূর্ণ প্রোগ্রামটি Execute হয়েছে।




*********** Happy Programming ***********
https://mehedihasaninfo.com/




Comments

Popular posts from this blog

Business Benefits of Using Flutter Technology

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বেসিক কনসেপ্ট

ডার্ট প্রোগ্রামিংয়ের খুবই গুরুত্বপূর্ণ ফিচার Async & Await কি? কেন?