কম্পিউটার টিউটোরিয়াল

পাইথনে কংক্রিট এক্সসেপশন (Concrete Exceptions)


পাইথনে কিছু সাধারণ এক্সসেপশন (Exception) রয়েছে। এই এক্সসেপশনগুলো বিভিন্ন প্রোগ্রামে উঠে। এগুলো প্রোগ্রামার নিজে উত্থাপন করতে পারে (explicitly), অথবা পাইথন ইন্টারপ্রেটার স্বয়ংক্রিয়ভাবে উত্থাপন করতে পারে (implicitly)। কিছু সাধারণ এক্সসেপশন নিচে দেওয়া হলো:

AssertionError এক্সসেপশন

যখন একটি assert স্টেটমেন্ট ব্যর্থ হয়, তখন AssertionError উঠে। পাইথনে আমরা কোডে assert স্টেটমেন্ট লিখতে পারি। assert স্টেটমেন্ট সবসময় সত্য (true) হতে হবে। শর্ত পূরণ না হলে AssertionError উঠবে।

উদাহরণ কোড

 class MyClass: def __init__(self, x): self.x = x assert self.x > 50 myObj = MyClass(5) 

আউটপুট

 --------------------------------------------------------------------------- AssertionError Traceback (most recent call last) <ipython-input-21-71785acdf821> in <module>() 4 assert self.x > 50 5 ----> 6 myObj = MyClass(5) <ipython-input-21-71785acdf821> in __init__(self, x) 2 def __init__(self, x): 3 self.x = x ----> 4 assert self.x > 50 5 6 myObj = MyClass(5) AssertionError: 

AttributeError এক্সসেপশন

যখন আমরা একটি ক্লাসের এমন অ্যাট্রিবিউট এক্সেস করার চেষ্টা করি যা ওতে নেই, তখন AttributeError উঠে।

উদাহরণ কোড

 class point: def __init__(self, x=0, y=0): self.x = x self.y = y def getpoint(self): print('x= ' + str(self.x)) print('y= ' + str(self.y)) print('z= ' + str(self.z)) pt = point(10, 20) pt.getpoint() 

আউটপুট

 x= 10 y= 20 --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-15-f64eb52b2192> in <module>() 10 11 pt = point(10, 20) ---> 12 pt.getpoint() <ipython-input-15-f64eb52b2192> in getpoint(self) 7 print('x= ' + str(self.x)) 8 print('y= ' + str(self.y)) ----> 9 print('z= ' + str(self.z)) 10 11 pt = point(10, 20) AttributeError: 'point' object has no attribute 'z' 

ImportError এক্সসেপশন

যখন import স্টেটমেন্ট কোনো মডিউল ইম্পোর্ট করতে সমস্যায় পড়ে, তখন ImportError হয়। এটা তখনও হয় যখন from স্টেটমেন্টে প্যাকেজের নাম ঠিক থাকে কিন্তু নির্দিষ্ট মডিউল খুঁজে পাওয়া যায় না।

উদাহরণ কোড

 from math import abcd def __init__(self, x=0, y=0): 

আউটপুট

 --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-23-ff4519a07c77> in <module>() ----> 1 from math import abcd ImportError: cannot import name 'abcd' 

ModuleNotFoundError এক্সসেপশন

এটি ImportError-এর সাবক্লাস। যখন কোনো মডিউল খুঁজে পাওয়া যায় না, তখন এটি উঠে। sys.modules-এ None পাওয়া গেলেও এটি উঠতে পারে।

উদাহরণ কোড

 import abcd 

আউটপুট

 --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-24-7b45aaa048eb> in <module>() ----> 1 import abcd ModuleNotFoundError: No module named 'abcd' 

IndexError এক্সসেপশন

যখন কোনো সিকোয়েন্স (List, Tuple, Set ইত্যাদি)-এর সাবস্ক্রিপ্ট বা ইন্ডেক্স আউট অফ রেঞ্জ হয়, তখন IndexError উঠে।

উদাহরণ কোড

 myList = [10, 20, 30, 40] print(str(myList[5])) 

আউটপুট

 --------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-29-a86bd85b04c9> in <module>() 1 myList = [10, 20, 30, 40] ----> 2 print(str(myList[5])) IndexError: list index out of range 

RecursionError এক্সসেপশন

RecursionError একটি রানটাইম এরর। যখন সর্বোচ্চ রিকার্শন গভীরতা (maximum recursion depth) অতিক্রম হয়, তখন এটি উঠে।

উদাহরণ কোড

 def myFunction(): myFunction() myFunction() 

আউটপুট

 --------------------------------------------------------------------------- RecursionError Traceback (most recent call last) <ipython-input-39-8a59e0fb982f> in <module>() 2 myFunction() 3 ----> 4 myFunction() <ipython-input-39-8a59e0fb982f> in myFunction() 1 def myFunction(): ----> 2 myFunction() 3 4 myFunction() ... last 1 frames repeated, from the frame below ... <ipython-input-39-8a59e0fb982f> in myFunction() 1 def myFunction(): ----> 2 myFunction() 3 4 myFunction() RecursionError: maximum recursion depth exceeded 

StopIteration এক্সসেপশন

পাইথনে next() বিল্ট-ইন মেথড দিয়ে StopIteration এরর পাওয়া যায়। যখন একটি ইটারেটরের আর কোনো এলিমেন্ট থাকে না, তখন next() মেথড StopIteration উত্থাপন করে।

উদাহরণ কোড

 myList = [10, 20, 30, 40] myIter = iter(myList) while True: print(next(myIter)) 

আউটপুট

 10 20 30 40 --------------------------------------------------------------------------- StopIteration Traceback (most recent call last) <ipython-input-42-e608e2162645> in <module>() 2 myIter = iter(myList) 3 while True: ----> 4 print(next(myIter)) StopIteration: 

IndentationError এক্সসেপশন

পাইথন কোডে অবৈধ ইন্ডেন্টেশন (indentation) থাকলে এই এরর উঠে। এটি পাইথনের SyntaxError ক্লাস থেকে ইনহেরিট করে।

উদাহরণ কোড

 for i in range(10): print("The value of i: " + str(i)) 

আউটপুট

 File "<ipython-input-44-d436d50bbdc8>", line 2 print("The value of i: " + str(i)) ^ IndentationError: expected an indented block 

TypeError এক্সসেপশন

যখন অনুপযুক্ত টাইপের অবজেক্টে কোনো অপারেশন করা হয়, তখন TypeError হয়। উদাহরণস্বরূপ, অ্যারে ইন্ডেক্সে ফ্লোটিং পয়েন্ট নম্বর দিলে TypeError হবে।

উদাহরণ কোড

 muList = [10, 20, 30, 40] print(myList[1.25]) 

আউটপুট

 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-46-e0a2a05cd4d4> in <module>() 1 muList = [10, 20, 30, 40] ----> 2 print(myList[1.25]) TypeError: list indices must be integers or slices, not float 

ZeroDivisionError এক্সসেপশন

যখন ভাগের হর ০ (শূন্য) হয়, তখন ZeroDivisionError উঠে।

উদাহরণ কোড

 print(5/0) 

আউটপুট

 --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-48-fad870a50e27> in <module>() ----> 1 print(5/0) ZeroDivisionError: division by zero 

  1. পাইথন Kivy-তে বাটন একশন (Button Action) - ক্লিক ইভেন্ট হ্যান্ডলিং

  2. পাইথন Tkinter-এ কল্যাপসিবল পেন (Collapsible Pane) তৈরি করা

  3. পাইথনে বাইনারি ট্রির ডায়ামিটার

  4. পাইথনে ইনহেরিটেন্স (Inheritance)