Python Assertion Error

Python Assertion Error



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

পাইথনে একটি AssertionError কি?

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

বাক্য গঠন: দাবি শর্ত, error_message(ঐচ্ছিক)







উদাহরণ

আমরা ইনপুট হিসাবে একজন ব্যক্তির বয়স লিখব এবং যদি এটি শূন্যের কম হয়, তাহলে কনসোল একটি দাবী ত্রুটি উত্থাপন করবে।





এখন, যদি আমরা 0 এর কম বয়সে প্রবেশ করি?





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



কিভাবে AssertionError পাইথনে কাজ করে

পাইথন ল্যাঙ্গুয়েজ একটি অ্যাসার্ট স্টেটমেন্ট অন্তর্ভুক্ত করে যা যৌক্তিক দাবি সহ সাধারণ ত্রুটি বার্তা আউটপুট তৈরি করতে ব্যবহার করা যেতে পারে। দাবী বিবৃতি ব্যর্থ হলে, একটি 'ব্যতিক্রম' AssertionError উত্থাপিত হয়। Python-এ, ব্যতিক্রম ক্লাসগুলি BaseException ক্লাস থেকে নেওয়া হয়। BaseException ক্লাস, যা AssertionError ক্লাসের বেস ক্লাস, যেখান থেকে Exception ক্লাসটি এসেছে। যখনই একটি ব্যবহার করা হয় তখন একটি অ্যাসার্ট স্টেটমেন্টের ব্যর্থতা মোকাবেলা করার জন্য উপযুক্ত ব্যতিক্রম হ্যান্ডলিং কোড থাকা উচিত। পাইথনে ডিফল্ট ব্যতিক্রম হ্যান্ডলার প্রোগ্রামার-লিখিত ত্রুটি বার্তাটি মুদ্রণ করবে, তবে ত্রুটিটি কোনও ত্রুটি বার্তা ছাড়াই পরিচালনা বা সমাধান করা যেতে পারে।

Python এ AssertionError বাস্তবায়ন করা হচ্ছে

নিম্নলিখিত পাইথনে AssertionError এর কয়েকটি উদাহরণ রয়েছে:

উদাহরণ

এই উদাহরণে, আমরা একটি Python প্রোগ্রাম লিখব যাতে একটি প্রোগ্রামে একটি AssertionError প্রদর্শন করা যায় যা একটি বৃত্তের ক্ষেত্রফল খুঁজে পায়।

ব্যাসার্ধ 'r' মানটি পূর্ববর্তী প্রোগ্রামের একটি ফাংশনে একটি ইনপুট হিসাবে পাস করা হয় যা বৃত্তের ক্ষেত্রফল খুঁজে বের করার জন্য তৈরি করা হয়। সরবরাহকৃত মান বা ব্যাসার্ধ 'r' শূন্যের নিচে আছে কিনা তা নির্ধারণ করতে দাবী বিবৃতিটি ব্যবহার করা হয় এবং যদি এটিতে একটি নেতিবাচক মান সরবরাহ করা হয় তবে একটি ব্যতিক্রম উত্থাপিত হবে। বৃত্তের ক্ষেত্রফল ফাংশনে সরবরাহ করা ব্যাসার্ধ 'r' এর মানের উপর ভিত্তি করে ফেরত দেওয়া হবে। প্রথমত, ফাংশনটি 3 হিসাবে r এর মান দিয়ে নির্বাহ করা হয়। তারপর ফাংশনটি 2.5 মান দিয়ে কার্যকর করা হয়। AssertionError উত্থাপিত হয় যখন আমরা 'r' এর একটি নেতিবাচক মান ব্যবহার করি, যেমন, '-1'।

আসুন একটি দাবী ত্রুটির ঘটনা প্রদর্শন করার জন্য আরেকটি উদাহরণ চেষ্টা করি।

উদাহরণ

এই উদাহরণে, প্রোগ্রামটি নির্ধারণ করবে যে ডিনোমিনেটরের মানটি শূন্য নয়।

দাবী ত্রুটির ত্রুটি বার্তাটি পূর্ববর্তী প্রোগ্রামে প্রদর্শিত হয়। আমরা দুটি ভেরিয়েবল (a এবং b) তৈরি করেছি এবং পূর্ণসংখ্যার মানগুলি ভেরিয়েবলগুলিকে নির্দিষ্ট করে। দ্বিতীয় ভেরিয়েবল, অর্থাত্, b এর পর পরীক্ষা করা হয় এটি assert স্টেটমেন্ট ব্যবহার করে 0 এর সমান নয় কিনা। অন্যথায় নির্দিষ্ট, ত্রুটি বার্তা মুদ্রিত হয়. যদি না হয়, প্রথম সংখ্যাটিকে দ্বিতীয় মান দিয়ে ভাগ করার ফলাফল প্রদর্শিত হয়। পূর্ববর্তী ছবিতে, প্রোগ্রামের আউটপুট প্রদর্শিত হয়।

AssertionError এর অ্যাপ্লিকেশন

দাবী ত্রুটির অন্যান্য উপকারী ব্যবহারগুলির মধ্যে রয়েছে:

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

কিভাবে আমরা পাইথনে দাবীর ত্রুটিগুলি এড়াতে পারি

  1. পাইথন প্রোগ্রামের -O পতাকা প্রতিটি দাবী বিবৃতি নিষ্ক্রিয় করতে ব্যবহার করা যেতে পারে। এটা মনে রাখা গুরুত্বপূর্ণ যে যদি আমরা দাবী বিবৃতি অক্ষম করি তাহলে যে বিবৃতিগুলি একটি দাবীর বিবৃতির পরে আসে সেগুলি কার্যকর করা হবে না৷
  2. এনভায়রনমেন্ট ভেরিয়েবল দাবী বিবৃতি বন্ধ করতে একটি পতাকা সেট করতে পারে। সমস্ত প্রক্রিয়া এবং অ্যাপ্লিকেশন যা পরিবেশ ব্যবহার করে বা উত্তরাধিকার সূত্রে প্রাপ্ত হয় এই পরিস্থিতিতে প্রভাবিত হয়।
  3. Python-এ, দাবীর ত্রুটি প্রতিরোধ করার সবচেয়ে সহজ পদ্ধতি হল সেগুলিকে ম্যানুয়ালি পরিচালনা করা। যদি আমরা নিশ্চিত করি যে প্রোগ্রামের নিয়ন্ত্রণ প্রবাহকে অন্যত্র করা হয়েছে যাতে এটি দাবী বিবৃতিতে অ্যাক্সেস না করে, তাহলে দাবী ত্রুটির কোন সুযোগ নেই।

Assertion Error হ্যান্ডলিং

দাবী বিবৃতি ছাড়াও, আমরা নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করে দাবীর ত্রুটি পরিচালনা করতে পারি:

ট্রাই-ব্যতীত ব্লক ব্যবহার করে দাবীর ত্রুটি পরিচালনা করা

দাবী বিবৃতি নির্ধারণ করে যে মানগুলি সমান কিনা। চেষ্টা ব্লকটি AssertionError ত্রুটি উত্থাপন করে কারণ এই পূর্ণসংখ্যাগুলি সমান নয়। প্রিন্ট কমান্ডটি এক্সিকিউট করা হয় যখন ব্যতিক্রম ব্লকটি ব্যতিক্রম ধরা পড়ে। এখানে, ব্যতিক্রম ব্লক থেকে প্রিন্ট স্টেটমেন্টের আউটপুট প্রদর্শিত হয়। raise কীওয়ার্ডটি ব্যাতিক্রম ব্লকে ত্রুটিটি পুনরায় বাড়াতে ব্যবহার করা যেতে পারে যাতে আমরা ব্যতিক্রমের উৎস নির্ধারণ করতে পারি। একটি ব্যতিক্রম ঘটলে, কীওয়ার্ড “raise” একটি ত্রুটি উত্থাপন করবে এবং প্রোগ্রামটি শেষ করবে। এটি বিদ্যমান ব্যতিক্রমের রেকর্ড/ট্র্যাক বজায় রাখতে বা রাখতে সাহায্য করে।

ট্রেসব্যাক মডিউল ব্যবহার করে Assertion Error হ্যান্ডেল করা

কোডে যখন বেশ কিছু দাবী বিবৃতি থাকে, তখন ট্রেসব্যাক মডিউল সঠিক ত্রুটির উৎস সনাক্ত করতে সাহায্য করে।

ট্রেসব্যাক মডিউল ব্যবহার করে, আমাদের মুদ্রণ বিবৃতি স্থানধারক {} দিয়ে লেখা যেতে পারে।

উপরন্তু, আমরা লাইনের অবস্থান, ফাইলের নাম, পদ্ধতির নাম, সেইসাথে যেখানে ব্যতিক্রম ঘটেছে সেই পাঠ্য/বার্তা সংরক্ষণ করার জন্য অন্যান্য ভেরিয়েবলকে সংজ্ঞায়িত করতে পারি।

ট্রেসব্যাক বস্তুটিকে 'tb' হিসেবে উল্লেখ করা হয়। আমরা দুটি স্থানধারক ব্যবহার করি: একটি পাঠ্যের জন্য এবং একটি মুদ্রণ বিবৃতিতে লাইনের অবস্থানের জন্য।

স্টেটমেন্টের তিনটি উপাদান “উত্থাপন” — exc_type, exc_traceback এবং exc_value — sys.exc_info() ফাংশন দ্বারা ফেরত দেওয়া হয়।

প্রিন্ট স্টেটমেন্ট ব্যবহার করে AssertionError সামলানো

ম্যানুয়ালি একটি ব্যতিক্রম পরিচালনা করতে, আমরা ব্লক ছাড়ার ভিতরে “প্রিন্ট” বিবৃতিটি ব্যবহার করতে পারি।

মুদ্রণ বিবৃতি ব্যবহারকারীর প্রবেশ করা কোনো ত্রুটি বার্তা প্রিন্ট করে। এই পদ্ধতির সাথে, একটি প্রযুক্তিগত ত্রুটি ব্যবহারকারীর জন্য উদ্বেগের বিষয় হবে না।

একটি ত্রুটির পরিবর্তে, একটি সংক্ষিপ্ত বার্তা প্রদর্শিত হয়।

উপসংহার

এই পোস্টে, আমরা প্রথম পাইথনে ব্যতিক্রমগুলির ভূমিকা দেখেছি। আমরা AssertionError নিয়ে আলোচনা করেছি, এটি কিভাবে কাজ করে এবং কিভাবে আমরা পাইথনে AssertionError প্রয়োগ করতে পারি। আমরা AssertionError এর বেশ কিছু সুবিধা ব্যাখ্যা করেছি এবং কিভাবে আমরা সেগুলি এড়াতে পারি। এই পোস্টের শেষ বিভাগে, আমরা দেখেছি কিভাবে আমরা Try-Except Blocks, ট্রেসব্যাক মডিউল এবং প্রিন্ট স্টেটমেন্ট ব্যবহার করে পাইথনে AssertionError সামলাতে পারি।