বাংলায় পাইথন
  • পরিচিতি
  • ইনস্টলেশন
  • ব্যাসিক কনসেপ্ট
    • সাধারণ কিছু অপারেশন
    • আরও কিছু নিউমেরিক অপারেশন
    • স্ট্রিং
    • ব্যাসিক ইনপুট আউটপুট
    • স্ট্রিং অপারেশন
    • টাইপ কনভার্সন
    • ভ্যারিয়েবল
    • ইনপ্লেস অপারেটর
    • এডিটর এর ব্যবহার
  • কন্ট্রোল স্ট্রাকচার
    • বুলিয়ান
    • if স্টেটমেন্ট
    • else স্টেটমেন্ট
    • বুলিয়ান লজিক
    • অপারেটর প্রেসিডেন্স
    • while লুপ
    • লিস্ট
    • লিস্ট অপারেশন
    • লিস্ট ফাংশন
    • রেঞ্জ
    • for লুপ
  • গুরুত্বপূর্ণ ডাটা টাইপ
    • None
    • ডিকশনারি
    • ডিকশনারি ফাংশন
    • টাপল
    • আবারও লিস্ট
    • লিস্ট ও ডিকশনারি কম্প্রিহেনশন
  • ফাংশন ও মডিউল
    • কোডের পুনব্যবহার
    • ফাংশন
    • ফাংশন আর্গুমেন্ট
    • ফাংশন রিটার্ন
    • কমেন্ট ও ডক স্ট্রিং
    • অবজেক্ট হিসেবে ফাংশন
    • মডিউল
    • স্ট্যান্ডার্ড লাইব্রেরী
    • pip
  • ফাইল ও এক্সেপশন
    • এক্সেপশন
    • এক্সেপশন হ্যান্ডেলিং
    • finally
    • এক্সেপশন Raise
    • Assertions
    • ফাইল খোলা
    • ফাইল পড়া
    • ফাইলে লেখা
    • ফাইল নিয়ে সঠিক কাজ
  • ফাংশনাল প্রোগ্রামিং
    • ভূমিকা
    • ল্যামডা
    • ম্যাপ ও ফিল্টার
    • জেনারেটর
    • ডেকোরেটর
    • রিকারসন
    • সেট
    • itertools
  • অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং
    • ক্লাস
    • ইনহেরিটেন্স
    • ম্যাজিক মেথড
    • অপারেটর অভারলোডিং
    • অবজেক্ট লাইফ সাইকেল
    • ডাটা হাইডিং
    • স্ক্লাস মেথড ও ট্যাটিক মেথড
    • প্রোপার্টিস
  • রেগুলার এক্সপ্রেশন
    • পরিচিতি
    • মেটা ক্যারেক্টার
    • ক্যারেক্টার ক্লাস
    • গ্রুপ
    • স্পেশাল সিকুয়েন্স
  • অতিরিক্ত কিছু বিষয়
    • পাইথনিকনেস
    • PEP
    • main
    • # -- coding: utf-8 --
    • #! /usr/bin/env python
    • CPython
    • ডকুমেন্টেশন পড়া
  • প্যাকেজিং
Powered by GitBook
On this page
  1. ফাইল ও এক্সেপশন

এক্সেপশন Raise

আগে আমরা দেখেছি কিভাবে পাইথন প্রয়োজনে নিজে থেকেই প্রোগ্রামে কিছু এক্সেপশন তৈরি করে। চাইলে ম্যানুয়ালি কোড লিখেও প্রোগ্রামের নির্দিষ্ট কোন যায়গায় এক্সেপশন রেইজ বা সহজ ভাবে বলতে গেলে এক্সেপশন তৈরি করা যায়। raise স্টেটমেন্ট ব্যবহার করে এভাবে কাস্টম এক্সেপশন তৈরি করা যায়। নিচের উদাহরণটি দেখি -

print("Hello")
raise NameError('HiThere')

আউটপুট,

Hello
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: HiThere

উপরের প্রোগ্রামের দ্বিতীয় লাইনে আমরা ম্যানুয়ালি একটি NameError টাইপের এক্সেপশন তৈরি করেছি যার কারনে পাইথন সাধারণভাবেই সেই এক্সেপশনটি থ্রো করেছে।

উপরের মত এক্সেপশনের আর্গুমেন্ট (HiThere) সেট না করেও শুধু NameError এক্সপশন থ্রো করে যেত। যেমন নিচের মত -

raise TypeError

আউটপুট,

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError

raise এর একটি মজার ব্যবহার দেখবো নিচের উদাহরণে,

try:
    num = 5 / 0
except:
    print("Custom message about an error!")
    raise

আউটপুট,

Custom message about an error!
Traceback (most recent call last):
  File "/Users/nuhil/Desktop/Test.py", line 2, in <module>
    num = 5 / 0
ZeroDivisionError: integer division or modulo by zero

খেয়াল করুন কি ঘটছে উপরের প্রোগ্রামে। খুব সহজেই বোঝা যাচ্ছে যে try ব্লকে একটি এক্সেপশন ঘটছে। এটাও বুঝতে পারছি যে সেটা ZeroDivisionError এক্সেপশন হতে পারে কারন শূন্য দিয়ে ৫ কে ভাগ করার চেষ্টা করা হয়েছে। কিন্তু আমরা except ব্লকে নির্দিষ্ট করে কোন এক্সেপশন ডিফাইন করে সেটা হ্যান্ডেল করছি না। তারপরেও শেষ নাগাদ পাইথন আমাদেরকে ZeroDivisionError: integer division or modulo by zero এক্সেপশন দেখাতে পারছে। এর কারন - আমরা except এর মধ্যে raise ব্যবহার করেছি। এভাবেও raise কে কাজে লাগিয়ে এর আগে ঘটে যাওয়া এক্সেপশনের টাইপ পেয়ে যেতে পারি।

PreviousfinallyNextAssertions

Last updated 6 years ago