সফ্টওয়্যার বিকাশের সময় ব্যতিক্রমগুলি কাস্টমাইজ করা একটি সাধারণ উদ্বেগ নয়। কিন্তু যদি আপনি একটি পর্যবেক্ষণ টুলে একটি ত্রুটি ধরতে পারেন এবং সঠিকভাবে এবং দ্রুত সমস্যাটি সনাক্ত করতে না পারেন, তাহলে আপনার একটি ব্যতিক্রম সম্পর্কে আরও তথ্য এবং বিশদ বিবরণের প্রয়োজন হতে পারে৷
এই নিবন্ধটি আপনাকে দেখাবে কিভাবে রুবিতে ব্যতিক্রমগুলি কাস্টমাইজ করা যায় এবং ত্রুটির তথ্যের অভাবের কারণে সম্ভাব্য ভবিষ্যতের সমস্যাগুলি হ্রাস করা যায়৷
চলুন সরাসরি ভিতরে ঝাঁপ দেওয়া যাক!
একটি দ্রুত সাইড-নোট
এই পোস্টটি AppSignal-এর সাহায্যে রুবিতে ডিবাগ করার একটি স্বাভাবিক অগ্রগতি, তাই আমরা ডিবাগিংয়ের একটি ওভারভিউ এবং কাস্টম ব্যতিক্রমগুলির পরিচিতির জন্য প্রথমে এটি পড়ার সুপারিশ করছি৷
রুবি সহ একটি ব্যতিক্রম কিভাবে উদ্ধার করবেন
রুবির Exception নামে একটি ক্লাস আছে , যা থেকে ত্রুটি-হ্যান্ডলিং ক্লাস উত্তরাধিকারসূত্রে পাওয়া যায়। এই বিভাগে, আমরা আমাদের কাস্টম ব্যতিক্রম তৈরি করার আগে রুবির কাঠামোগত ব্যতিক্রম প্রবাহ আরও ভালভাবে বুঝতে পারব।
Exception রুবিতে প্রধান ব্যতিক্রম ক্লাস, এবং rescue Exception Exception থেকে উত্তরাধিকারসূত্রে পাওয়া সমস্ত ব্যতিক্রম ধরবে . আমাদের অ্যাপে এটি ব্যবহার করা সর্বোত্তম অনুশীলন নয়, কারণ এটি রুবি দ্বারা অভ্যন্তরীণভাবে ব্যবহৃত সমস্ত ব্যতিক্রমগুলি ধরবে৷
রুবিতে একটি ব্যতিক্রম উদ্ধারের সবচেয়ে সহজ উপায় হল একটি begin ... rescue তৈরি করা নীচের উদাহরণের মত কোড ব্লক:
Exception থেকে সমস্ত ব্যতিক্রম ধরা হবে, আমাদের ফিল্টার করার জন্য আরও নির্দিষ্ট কিছু ব্যবহার করার চেষ্টা করা উচিত এবং আমরা যে ত্রুটিটি চাই তা পেতে পারি৷ একটি উদাহরণ হল StandardError ক্লাস, রুবির অভ্যন্তরীণ ব্যতিক্রমগুলি উপেক্ষা করে অ্যাপ্লিকেশন কোড ত্রুটি সম্পর্কিত ব্যতিক্রমগুলি ধরতে ব্যবহৃত একটি আদর্শ উদ্ধারকারী৷
একটি StandardException ধরতে , আপনি নীচের উদাহরণ ব্যবহার করতে পারেন:
অথবা, যদি কোন ব্যতিক্রম শ্রেণী বলা না থাকে, রুবি StandardException দ্বারা পরিচালিত ব্যতিক্রমগুলি ফিরিয়ে দেবে ক্লাস।
রুবির সাথে একটি কাস্টম ব্যতিক্রম তৈরি করতে, আপনি সম্ভবত একটি ক্লাস তৈরি করবেন যা StandardError থেকে উত্তরাধিকারসূত্রে পাওয়া যায় . আমরা পরবর্তী কয়েকটি বিভাগে এটি কভার করব।
ব্যতিক্রম সম্পর্কে আরও জানতে এবং উত্তরাধিকারের জন্য সেরাটি খুঁজে পেতে, রুবির ব্যতিক্রম তালিকাটি পরীক্ষা করুন৷
রুবি ব্যতিক্রমে অতিরিক্ত তথ্য যোগ করা
প্রাসঙ্গিক তথ্য না পাঠিয়ে একটি নতুন ব্যতিক্রম তৈরি করা সমস্যাটিকে ডিবাগিং — সনাক্তকরণ এবং ঠিক করতে — কার্যকরভাবে সাহায্য করবে না৷ আপনাকে ত্রুটির বিবরণ যোগ করতে হবে। এখানে, আমরা দেখব কিভাবে বস্তু থেকে কাস্টম ব্যতিক্রমে তথ্য প্রেরণ করা যায়।
আমরা যে ডেটা লগ করতে চাই তা পাওয়ার জন্য আসুন একটি নতুন কাস্টম ব্যতিক্রম তৈরি করি। পূর্ববর্তী বিভাগে উল্লিখিত হিসাবে, কাস্টম ব্যতিক্রমটি StandardError থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া প্রয়োজন .
আপনি এই বাস্তবায়ন পরীক্ষা করার জন্য একটি সাধারণ রেল প্রকল্প ব্যবহার করতে পারেন। exceptions নামে একটি নতুন ফোল্ডার তৈরি করুন৷ app এর ভিতরে ফোল্ডার এবং custom_exception.rb নামে একটি ক্লাস আপনার রেল প্রকল্পে।
এই ব্যতিক্রম ক্লাসে, আমরা লগগুলিতে দেখানো প্রয়োজন এমন সমস্ত তথ্য সংজ্ঞায়িত করতে পারি এবং আমরা আমাদের ডেটার জন্য চারটি বৈশিষ্ট্য ব্যবহার করি:
- ব্যতিক্রম গণনা করার জন্য একটি কোড
- একটি নাম
- একটি তথ্যমূলক বার্তা
- রুবি দ্বারা ইতিমধ্যেই দেওয়া ব্যতিক্রম সম্পর্কে অভ্যন্তরীণ তথ্যের বিবরণ
এবং এখন আমরা একটি begin...rescue তৈরি করি CustomException বাড়াতে ব্লক করুন এবং প্যারামিটারগুলিকে ব্যতিক্রম বৈশিষ্ট্যগুলিতে প্রেরণ করুন।
এটি দরকারী বলে মনে হচ্ছে, তাই আসুন বাস্তবায়ন চালিয়ে যাই এবং ব্যতিক্রম লগ কাস্টমাইজ করতে এই ডেটা ব্যবহার করি৷
রুবিতে একটি ব্যতিক্রম প্রসারিত করা
একটি ব্যতিক্রম প্রসারিত করা আমাদের কাস্টমাইজেশনকে আরও নির্দিষ্ট এবং পুনঃব্যবহারযোগ্য স্তরে উন্নীত করতে দেয়। রুবির যেমন বিভিন্ন ধরনের ত্রুটির জন্য বেশ কিছু ব্যতিক্রম রয়েছে, তেমনি আমরা আমাদের সিস্টেমে এই প্রোগ্রামিং লাইনটি অনুসরণ করতে পারি।
এর পরে, আসুন বুঝতে পারি কীভাবে আমাদের ব্যতিক্রমকে ওভাররাইড করতে হয় এবং এটিকে একটি প্রেক্ষাপটে ব্যবহার করতে হয় যা একটি এক্সটেনশন দাবি করে৷
লগে তথ্য খোঁজা একটি বেদনাদায়ক কার্যকলাপ। বিকাশকারীরা প্রায়শই ত্রুটি বা অনুসন্ধান এবং ফিল্টার সম্পর্কে আরও তথ্য অন্তর্ভুক্ত না করার জন্য নিজেদের দোষ দেয়৷ আপনি যদি এমন কোনো মনিটরিং টুল ব্যবহার না করে থাকেন যা এটি প্রদান করে, অর্থবহ ডেটা সহ ভবিষ্যতে আপনাকে বাঁচাতে পারে।
প্রো-টিপ :AppSignal-এ কাস্টম ব্যতিক্রমগুলি কীভাবে সেট আপ এবং ট্র্যাক করতে হয় সে সম্পর্কে তথ্যের জন্য আমাদের পোস্টে 'AppSignal-এর সাথে রুবিতে ডিবাগিং এক্সেপশনস'-এর বিভাগটি দেখুন৷
নীচের উদাহরণে, আমরা লগে ব্যতিক্রম প্রদর্শন কাস্টমাইজ করব। প্রাথমিকভাবে, আপনি মনে করতে পারেন যে এটি ডেটা দেখানোর একটি হালকা এবং সুন্দর উপায়। যাইহোক, ডেটাতে ব্যবহৃত কীওয়ার্ডগুলি একটি ত্রুটি খুঁজে বের করতে এবং যে কেউ অ্যাপ্লিকেশনটি নিরীক্ষণ করবে তাকে সাহায্য করার মূল বিষয়৷
আপনার জেমফাইলে নীচের কোডটি অন্তর্ভুক্ত করে আপনার প্রকল্পে কালারাইজ রত্ন যোগ করুন।
কালারাইজ জেম ইনস্টল করতে বান্ডিলটি চালান এবং আপনার রেল অ্যাপ্লিকেশন চালু করুন।
এখন, আপনার ব্যতিক্রম ক্লাসে, মণি আমদানি করুন। বৈশিষ্ট্যগুলিকে একটি বিন্যাসিত উপায়ে মুদ্রণ করুন, যাতে এটি দেখতে সহজ এবং দ্রুত একটি গুরুত্বপূর্ণ ত্রুটি খুঁজে পাওয়া যায়৷
এই ভিজ্যুয়াল কাস্টমাইজেশনের ফলাফল দেখুন এবং আপনার বিন্যাস এবং শৈলী তৈরি করতে কিছু বিকল্প পরীক্ষা করুন।

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