কম্পিউটার

পাইথন ব্যতিক্রম:একটি গাইড

ব্যতিক্রমগুলি পাইথন ইন্টারপ্রেটার এবং ম্যানুয়ালি দ্বারা উত্থাপিত হতে পারে। অন্তর্নির্মিত ব্যতিক্রমগুলি একটি প্রোগ্রামে সাধারণ ত্রুটিগুলি ধরতে সহায়তা করে৷

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

একটি ব্যতিক্রম কি?

একটি ব্যতিক্রম, যাকে যৌক্তিক ত্রুটিও বলা হয়, এটি একটি ত্রুটি যা প্রোগ্রাম রানটাইমের সময় ঘটে।

পাইথনে দুটি ধরণের ত্রুটি রয়েছে:সিনট্যাক্স ত্রুটি এবং রানটাইম ত্রুটি। একটি প্রোগ্রাম চালানোর আগে সিনট্যাক্স ত্রুটি উত্থাপিত হয়। আপনার প্রোগ্রাম একটি সিনট্যাক্স ত্রুটি সম্মুখীন হলে, আপনার প্রোগ্রাম রান করতে সক্ষম হবে না. কারণ পাইথন সিনট্যাক্স ত্রুটি ধারণ করে এমন কোড ব্যাখ্যা করতে পারে না।

রানটাইম ত্রুটি, যাকে ব্যতিক্রমও বলা হয়, পাইথন একটি প্রোগ্রাম চালানোর সময় সম্মুখীন হয়। একটি প্রোগ্রামের 30 লাইনে একটি ব্যতিক্রম উত্থাপিত হতে পারে। যদি 30 লাইনে একটি ব্যতিক্রম উত্থাপিত হয়, 30 লাইন কোড চলবে, তাহলে প্রোগ্রামটি বন্ধ হয়ে যাবে।

এখানে একটি ব্যতিক্রম উদাহরণ:

Traceback (most recent call last):
  File "main.py", line 6, in <module>
	s_names.append(n)
AttributeError: 'str' object has no attribute 'append'

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

আমাদের ত্রুটি বার্তার শেষ বাক্যটি ভেঙে দেওয়া যাক:

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

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।

অ্যাট্রিবিউট ত্রুটি:'str' অবজেক্টের কোনো অ্যাট্রিবিউট নেই 'সংযোজন'

এই ক্ষেত্রে, আমরা জানি আমাদের ত্রুটি একটি বৈশিষ্ট্য ত্রুটি। এর মানে আমরা এমন একটি বৈশিষ্ট্য উল্লেখ করার চেষ্টা করছি যা বিদ্যমান নেই। আমাদের ত্রুটি বার্তা আমাদের বলে যে আমরা একটি স্ট্রিং অবজেক্টে append() ব্যবহার করার চেষ্টা করছি, যা অনুমোদিত নয়।

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

কোথায় আমি একটি ব্যতিক্রমের সম্মুখীন হতে পারি?

প্রোগ্রামারদের তাদের কোডে ত্রুটি ধরতে সাহায্য করার জন্য, পাইথনের বিল্ট-ইন ব্যতিক্রমের একটি পরিসীমা রয়েছে। এই ব্যতিক্রমগুলি আপনাকে আপনার কোডে একটি সমস্যার কারণ সনাক্ত করতে সাহায্য করতে পারে যাতে আপনি সেগুলি ঠিক করতে পারেন৷ নীচে কয়েকটি সাধারণ ব্যতিক্রম রয়েছে যা আপনি সম্মুখীন হতে পারেন:

  • TypeError:ঘটে যখন আপনি একটি বস্তুতে একটি ফাংশন প্রয়োগ করেন যার টাইপ সেই ফাংশনটিকে সমর্থন করে না। (যেমন TypeError:শুধুমাত্র একটি পুনরাবৃত্তিযোগ্য যোগদান করতে পারে)
  • সিনট্যাক্স ত্রুটি:আপনার সিনট্যাক্সে একটি সমস্যা আছে তা জানাতে একটি প্রোগ্রাম কার্যকর হওয়ার আগে উত্থাপিত হয় (যেমন সিনট্যাক্স ত্রুটি:অবৈধ সিনট্যাক্স)
  • কী ত্রুটি:যদি আপনি একটি অভিধানে একটি কী উল্লেখ করেন যা বিদ্যমান নেই। (যেমন কী-এরর:“usb_ports”)
  • আমদানি ত্রুটি:যদি আপনি এমন একটি প্যাকেজ আমদানি করার চেষ্টা করেন যা বিদ্যমান নেই, বা এমন একটি প্যাকেজ থেকে একটি ফাংশন যা বিদ্যমান নেই৷

পাইথন ভাষায় আপনি যে ব্যতিক্রমগুলির সম্মুখীন হতে পারেন তার মধ্যে আমরা শুধুমাত্র কয়েকটি তালিকাবদ্ধ করেছি৷

একটি ব্যতিক্রম কিভাবে উত্থাপন করবেন

আপনি আপনার কোডে আপনার নিজস্ব কাস্টম ব্যতিক্রম সংজ্ঞায়িত করতে পারেন। পাইথন দ্বারা প্রদত্ত অন্তর্নির্মিত ব্যতিক্রমগুলি আপনার প্রোগ্রামের প্রয়োজন অনুসারে না হলে এটি সহায়ক হতে পারে।

আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যা একটি গেমের জন্য একটি পাসওয়ার্ড যাচাই করে। শুরু করতে, আসুন ব্যবহারকারীকে একটি পাসওয়ার্ড সন্নিবেশ করতে বলি:

password = input("Enter a password: ")

ব্যবহারকারীর পাসওয়ার্ড বৈধ হওয়ার জন্য, এটি 12 অক্ষরের বেশি দীর্ঘ হতে হবে। ব্যবহারকারীর পাসওয়ার্ড 12 অক্ষর বা তার কম হলে, আমরা একটি ব্যতিক্রম বাড়াতে চাই।

এটি করার জন্য, আমরা একটি if স্টেটমেন্ট ব্যবহার করতে যাচ্ছি। ব্যবহারকারীর বেছে নেওয়া পাসওয়ার্ডটি 12 অক্ষরের কম কিনা তা নিচের if স্টেটমেন্টটি পরীক্ষা করবে:

if len(password) > 12:
	print("Your password is valid.")
else:
	raise Exception("Your password is not the correct length.")

আমরা ব্যবহারকারীর পাসওয়ার্ডের দৈর্ঘ্য গণনা করতে len() পদ্ধতি ব্যবহার করি। যদি একজন ব্যবহারকারী একটি অবৈধ পাসওয়ার্ড সন্নিবেশ করেন, তাহলে আমাদের প্রোগ্রাম "আপনার পাসওয়ার্ডটি সঠিক দৈর্ঘ্য নয়" বলে একটি বার্তা দিয়ে একটি ব্যতিক্রম উত্থাপন করবে।

এটি কাজ করে কিনা তা দেখতে আমাদের কোডটি চেষ্টা করুন:

Enter a password: Bacon120
Traceback (most recent call last):
  File "main.py", line 6, in <module>
	raise Exception("Your password is not the correct length.")
Exception: Your password is not the correct length.

আমরা যে পাসওয়ার্ডটি দিয়েছি তা 12টি অক্ষরের কম ছিল। আমাদের কোড বন্ধ হয়ে যায় কারণ আমরা একটি অবৈধ পাসওয়ার্ড দিয়েছি। আসুন একটি বৈধ পাসওয়ার্ড দিয়ে আমাদের প্রোগ্রাম চালানোর চেষ্টা করি:

Enter a password: Bacon120Bacon120
Your password is valid.

আমাদের প্রোগ্রাম সফলভাবে সম্পাদন করে।

একটি ব্যতিক্রম কিভাবে পরিচালনা করবেন

ডিফল্টরূপে, ব্যতিক্রমগুলি একটি প্রোগ্রামের সম্পাদন বন্ধ করবে। যদিও এটি কার্যকর কারণ এটি আপনাকে একটি ত্রুটির সমাধান খুঁজতে বাধ্য করে, এমন কিছু ক্ষেত্রে রয়েছে যেখানে ব্যতিক্রম উত্থাপিত হলে আপনি আপনার প্রোগ্রামটি কার্যকর করা বন্ধ করতে চান না।

উদাহরণস্বরূপ, যদি আপনি একটি তালিকার ডেটা পয়েন্টগুলি বৈধ কিনা তা পরীক্ষা করছেন, আপনি প্রতিবার একটি অবৈধ ডেটা পয়েন্ট আবিষ্কৃত হওয়ার সময় একটি ব্যতিক্রম উত্থাপন করতে চান না।

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

শুরু করতে, আসুন শিক্ষার্থী এবং গ্রেড তথ্য সহ একটি অভিধান সংজ্ঞায়িত করি:

data = {
	"Lucy": 73,
	"Carlton": 59,
	"Adam": 73
}

এর পরে, আসুন একজন ব্যবহারকারীকে একটি নাম সন্নিবেশ করতে বলি যার গ্রেড তারা পুনরুদ্ধার করতে চায়। আমরা এটি একটি "চেষ্টা" ব্লকের মধ্যে করতে যাচ্ছি যাতে আমরা আমাদের কোডে পরে একটি ব্যতিক্রম পরিচালনা করতে পারি:

try:
	student = input("Enter the name of the student whose grade you want to retrieve: ")
	print(data[student])

এই কোডটি সেই শিক্ষার্থীর গ্রেড প্রিন্ট করবে যার নামের সাথে ব্যবহারকারী প্রোগ্রামে সন্নিবেশ করান। যাইহোক, যদি একজন ব্যবহারকারী একটি নাম সন্নিবেশ করেন যা অবৈধ, একটি কী-এরর সম্মুখীন হবে।

আমরা আমাদের কোডে একটি ছাড়া ব্লক যোগ করে এটি পরিচালনা করতে যাচ্ছি:

try:
	student = input("Enter the name of the student whose grade you want to retrieve: ")
	print(data[student])
except:
	print("This student is not present in the list of grades.")

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

Enter the name of the student whose grade you want to retrieve: Lucy
73

যখন আমরা একটি বৈধ ছাত্রের নাম লিখি, তখন আমাদের প্রোগ্রাম কাজ করে। আসুন আমাদের প্রোগ্রামটি চেষ্টা করে দেখি যদি আমরা একটি অবৈধ ছাত্রের নাম সন্নিবেশ করি:

Enter the name of the student whose grade you want to retrieve: Kaitlin
This student is not present in the list of grades.

একটি ব্যতিক্রম উত্থাপিত হয় কিন্তু আমাদের প্রোগ্রাম বন্ধ হয় না. পরিবর্তে, "ব্যতীত" ব্লকের বিষয়বস্তু কার্যকর করা হয়।

ট্রাই সম্পর্কে আরও জানতে...ব্লক ব্যতীত, পাইথন ট্রাই এর উপর আমাদের গাইড পড়ুন...ব্যতীত।

উপসংহার

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

আপনি raise স্টেটমেন্ট ব্যবহার করে আপনার নিজস্ব ব্যতিক্রম বাড়াতে পারেন। আপনি চেষ্টা ব্যবহার করে ব্যতিক্রমগুলি পরিচালনা করতে পারেন...কোডের ব্লক ছাড়া।

এখন আপনার কাছে পেশাদারের মতো পাইথন ব্যতিক্রম সমাধানের জন্য প্রয়োজনীয় সরঞ্জামগুলি রয়েছে!


  1. কিভাবে আপনি সঠিকভাবে পাইথনে ব্যতিক্রম উপেক্ষা করবেন?

  2. একটি তালিকা বোঝার মধ্যে একটি পাইথন ব্যতিক্রম কিভাবে ধরা যায়?

  3. রুবিতে ব্যতিক্রমের জন্য একটি নতুনদের গাইড

  4. রুবিতে ব্যতিক্রম