পাইথনের অন্তর্নির্মিত ব্যতিক্রম ক্লাসগুলি আপনার কোডে উদ্ভূত কিছু ত্রুটির পরিস্থিতির সমাধান করে না। এই ধরনের ক্ষেত্রে, এই ত্রুটিগুলি কার্যকরভাবে পরিচালনা করার জন্য আপনাকে কাস্টম ব্যতিক্রম তৈরি করতে হবে।
দিনের MUO ভিডিও কন্টেন্টের সাথে চালিয়ে যেতে স্ক্রোল করুন
পাইথনে, আপনি কাস্টম ব্যতিক্রমগুলি সংজ্ঞায়িত করতে পারেন এবং নির্দিষ্ট ত্রুটির পরিস্থিতি ঘটলে সেগুলি বাড়াতে পারেন। আপনি কাস্টম ব্যতিক্রম সহ নির্দিষ্ট, তথ্যপূর্ণ ত্রুটিগুলি পরিচালনা করতে পারেন, আপনার কোডের পাঠযোগ্যতা এবং রক্ষণাবেক্ষণের উন্নতি করতে পারেন।
কেন আপনি কাস্টম ব্যতিক্রম প্রয়োজন?
একটি অ্যাপ্লিকেশনের বিকাশের সময়, কোডে পরিবর্তন, অন্যান্য প্যাকেজ বা লাইব্রেরির সাথে একীকরণ এবং বহিরাগত অ্যাপ্লিকেশনগুলির সাথে মিথস্ক্রিয়াগুলির কারণে বিভিন্ন ত্রুটির পরিস্থিতি দেখা দিতে পারে। এই ত্রুটিগুলি থেকে পুনরুদ্ধার করতে বা ব্যর্থতাকে সুন্দরভাবে পরিচালনা করার জন্য এটি পরিচালনা করা অত্যন্ত গুরুত্বপূর্ণ।
পাইথন একটি পরিসীমা অফার করে অন্তর্নির্মিত ব্যতিক্রম ক্লাস যে ত্রুটি কভার যেমন মান ত্রুটি , টাইপ ত্রুটি , FileNotFoundError , এবং আরো যদিও এই অন্তর্নির্মিত ব্যতিক্রমগুলি তাদের উদ্দেশ্য ভালভাবে পরিবেশন করে, তারা শুধুমাত্র কখনও কখনও আপনার অ্যাপ্লিকেশনে ঘটতে পারে এমন ত্রুটিগুলিকে সঠিকভাবে উপস্থাপন করতে পারে।
কাস্টম ব্যতিক্রমগুলি তৈরি করার মাধ্যমে, আপনি আপনার অ্যাপ্লিকেশনের প্রয়োজনীয়তা অনুসারে তাদের বিশেষভাবে তৈরি করতে পারেন এবং আপনার কোড ব্যবহার করে এমন বিকাশকারীদের জন্য তথ্য সরবরাহ করতে পারেন।
কাস্টম ব্যতিক্রম সংজ্ঞায়িত কিভাবে
কাস্টম ব্যতিক্রম তৈরি করতে, একটি পাইথন ক্লাস সংজ্ঞায়িত করুন যে থেকে উত্তরাধিকারসূত্রে পাওয়া যায় ব্যতিক্রম ক্লাস . দ্য ব্যতিক্রম ক্লাস বেস কার্যকারিতা অফার করে যা আপনাকে ব্যতিক্রমগুলি পরিচালনা করতে হবে এবং আপনি আপনার নির্দিষ্ট প্রয়োজনের উপর ভিত্তি করে বৈশিষ্ট্যগুলি যোগ করতে এটি কাস্টমাইজ করতে পারেন।
কাস্টম ব্যতিক্রম ক্লাস তৈরি করার সময়, ত্রুটির তথ্য সঞ্চয় করার জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলি সহ তাদের সহজ রাখুন। ব্যতিক্রম হ্যান্ডলাররা সঠিকভাবে ত্রুটিগুলি পরিচালনা করতে এই বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারে।
এখানে একটি কাস্টম ব্যতিক্রম ক্লাস, MyCustomError :
class MyCustomError(Exception):
def __init__(self, message=None):
self.message = message
super().__init__(message)
এই ক্লাস শুরু করার সময় একটি ঐচ্ছিক বার্তা যুক্তি গ্রহণ করে। এটি ব্যবহার করে সুপার() বেসের কনস্ট্রাক্টরকে কল করার পদ্ধতি ব্যতিক্রম ক্লাস, যা ব্যতিক্রম পরিচালনার জন্য অপরিহার্য।
কাস্টম ব্যতিক্রম বাড়াতে কিভাবে
একটি ত্রুটি বাড়াতে, ব্যবহার করুন বাড়াতে আপনার কাস্টম ব্যতিক্রম ক্লাসের একটি উদাহরণ দ্বারা অনুসরণ করা কীওয়ার্ড, এটি একটি যুক্তি হিসাবে একটি ত্রুটি বার্তা পাস করে:
if True:
raise MyCustomError("A Custom Error Was Raised!!!.")
আপনি কোনো আর্গুমেন্ট পাস না করেও ত্রুটি বাড়াতে পারেন:
if True:
raise MyCustomError # shorthand
কাস্টম ত্রুটি উত্থাপনের জন্য উভয় বিন্যাস উপযুক্ত৷
কাস্টম ব্যতিক্রমগুলি কীভাবে পরিচালনা করবেন
কাস্টম ব্যতিক্রমগুলি পরিচালনা করা একই পদ্ধতি অনুসরণ করে অন্তর্নির্মিত ব্যতিক্রমগুলি পরিচালনা করা . ব্যবহার করুন চেষ্টা করুন , ছাড়া , এবং অবশেষে কাস্টম ব্যতিক্রমগুলি ধরতে এবং যথাযথ ব্যবস্থা নিতে ব্লকগুলি।
try:
print("Hello, You're learning how to MakeUseOf Custom Errors")
raise MyCustomError("Opps, Something Went Wrong!!!.")
except MyCustomError as err:
print(f"Error: {err}")
finally:
print("Done Handling Custom Error")
এই ভাবে, আপনি উত্থাপিত কাস্টম ব্যতিক্রম সব ফর্ম পরিচালনা করতে পারেন.
একটি কার্যকর করার সময় যদি একটি ব্যতিক্রম ঘটে চেষ্টা করুন ব্লক, একটি অনুরূপ ছাড়া ব্লক এটি ধরতে এবং পরিচালনা করতে পারে। যদি কোন উপযুক্ত না হয় ছাড়া ব্যতিক্রম হ্যান্ডেল করতে ব্লক, যে কোনো অবশেষে ব্লক এক্সিকিউট হবে, তারপর ব্যতিক্রম আবার উত্থাপন করা হবে। ব্যবহার করা অবশেষে ব্লক করুন প্রাথমিকভাবে পরিচ্ছন্নতার কাজগুলি সম্পাদন করার জন্য যা যেকোন পরিস্থিতিতে চলতে হবে, ব্যতিক্রম ঘটুক বা না হোক।
try:
raise KeyboardInterrupt
except MyCustomError as err:
print(f"Error: {err}")
finally:
print("Did not Handle the KeyboardInterrupt Error. \
Can Only Handle MyCustomError")
এই নমুনায়, ক কীবোর্ড বাধা ব্যতিক্রম ঘটে, কিন্তু ছাড়া ব্লক শুধুমাত্র হ্যান্ডেল MyCustomError ব্যতিক্রম এই ক্ষেত্রে, দ অবশেষে ব্লক রান করে, এবং তারপর আন-হ্যান্ডেল করা ব্যতিক্রম আবার উত্থাপিত হয়।
কাস্টম ত্রুটি ক্লাসের উত্তরাধিকার
উপর ভিত্তি করে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এর ধারণা (OOP), আপনি নিয়মিত ক্লাসের মতো কাস্টম ব্যতিক্রম ক্লাস থেকেও উত্তরাধিকারী হতে পারেন। একটি কাস্টম ব্যতিক্রম ক্লাস থেকে উত্তরাধিকারসূত্রে, আপনি ত্রুটির ক্লাস তৈরি করতে পারেন যা একটি ব্যতিক্রমকে আরও নির্দিষ্ট প্রসঙ্গ প্রদান করে। এই পদ্ধতিটি আপনাকে আপনার কোডের বিভিন্ন স্তরে ত্রুটিগুলি পরিচালনা করতে দেয় এবং ত্রুটিটি কী কারণে হয়েছে তার আরও ভাল বোঝার ব্যবস্থা করে।
বলুন আপনি একটি ওয়েব অ্যাপ্লিকেশন তৈরি করছেন যা একটি বহিরাগত API এর সাথে ইন্টারঅ্যাক্ট করে। এই API এর বিভিন্ন ত্রুটির পরিস্থিতি থাকতে পারে। আপনি আপনার কোড জুড়ে ধারাবাহিকভাবে এবং স্পষ্টভাবে এই ত্রুটিগুলি পরিচালনা করতে চাইবেন। এটি অর্জন করতে, একটি কাস্টম ব্যতিক্রম ক্লাস তৈরি করুন, BaseAPIE ব্যতিক্রম :
গুগল ডক্সে টেক্সট বক্স োকান
class BaseAPIException(Exception):
"""Base class for API-related exceptions."""
def __init__(self, message):
super().__init__(message)
self.message = message
একবার আপনার এই বেস কাস্টম ব্যতিক্রম ক্লাস হয়ে গেলে, আপনি চাইল্ড এক্সেপশন ক্লাস তৈরি করতে পারেন যা এটি থেকে উত্তরাধিকারসূত্রে পাওয়া যায়:
class APINotFoundError(BaseAPIException):
"""Raised when the requested resource is not found in the API."""
pass
class APIAuthenticationError(BaseAPIException):
"""Raised when there's an issue with authentication to the API."""
pass
class APIRateLimitExceeded(BaseAPIException):
"""Raised when the rate limit for API requests is exceeded."""
pass
আপনার ওয়েব অ্যাপ্লিকেশনের মধ্যে API-তে কল করার সময় এই কাস্টম ব্যতিক্রমগুলি উত্থাপন করুন এবং ধরুন। আপনার কোডে উপযুক্ত যুক্তি ব্যবহার করে সেই অনুযায়ী তাদের পরিচালনা করুন।
def request_api():
try:
# Simulate an API error for demonstration purposes
raise APINotFoundError("Requested resource not found.")
except APINotFoundError as err:
# Log or handle the 'Not Found' error case
print(f"API Not Found Error: {err}")
except APIAuthenticationError:
# Take appropriate actions for authentication error
print(f"API Authentication Error: {err}")
except APIRateLimitExceeded:
# Handle the rate limit exceeded scenario
print(f"API Rate Limit Exceeded: {err}")
except BaseAPIException:
# Handle other unknown API exceptions
print(f"Unknown API Exception: {err}")
ক্লজ ব্যতীত ফাইনাল প্যারেন্ট ক্লাসের বিরুদ্ধে চেক করে এবং অন্য যেকোন API-সম্পর্কিত ত্রুটির জন্য ক্যাচ-অল হিসাবে কাজ করে।
আপনি যখন কাস্টম ব্যতিক্রম ক্লাসের উত্তরাধিকারী হন, তখন আপনি API এর মধ্যে ত্রুটিগুলি কার্যকরভাবে পরিচালনা করতে পারেন। এই পদ্ধতিটি আপনাকে API এর বাস্তবায়নের বিবরণ থেকে আপনার ত্রুটি পরিচালনাকে আলাদা করার অনুমতি দেয়, এটি কাস্টম ব্যতিক্রম যোগ করা বা পরিবর্তন করা সহজ করে যখন API বিকশিত হয় বা নতুন ত্রুটির ক্ষেত্রে সম্মুখীন হয়।
কাস্টম ব্যতিক্রম মোড়ানো
ব্যতিক্রমগুলি মোড়ানোর অর্থ হল একটি ব্যতিক্রম ধরা, এটি একটি কাস্টম ব্যতিক্রমের মধ্যে এনক্যাপসুলেট করুন এবং তারপরে মূল ব্যতিক্রমটিকে এর কারণ হিসাবে উল্লেখ করার সময় সেই কাস্টম ব্যতিক্রমটিকে উত্থাপন করুন৷ এই কৌশলটি ত্রুটি বার্তাগুলির প্রসঙ্গ সরবরাহ করতে সহায়তা করে এবং বাস্তবায়নের বিবরণ কলিং কোড থেকে লুকিয়ে রাখে।
আপনার ওয়েব অ্যাপ একটি API-এর সাথে ইন্টারঅ্যাক্ট করে এমন পরিস্থিতি বিবেচনা করুন। যদি API উত্থাপন করে a লুকআপ ত্রুটি , আপনি এটি ধরতে পারেন, তারপর একটি কাস্টম বাড়াতে পারেন APINotFoundError ব্যতিক্রম যা LookupError কে তার কারণ হিসাবে উল্লেখ করে:
3B4BAAAACAC94675C5DE6A9E338D440A5A6F45DC6ব্যবহার করা থেকে সঙ্গে ধারা বাড়াতে আপনার কাস্টম ব্যতিক্রমের মধ্যে মূল ব্যতিক্রম উল্লেখ করার বিবৃতি।
যখন কাস্টম ব্যতিক্রম ঘটে, তখন এটি a হিসাবে মূল ব্যতিক্রম অন্তর্ভুক্ত করে __কারণ__ বৈশিষ্ট্য, কাস্টম ব্যতিক্রম এবং মূলের মধ্যে একটি লিঙ্ক প্রদান করে। এটি আপনাকে একটি ব্যতিক্রমের উত্স ট্রেস করতে দেয়৷
ব্যতিক্রমগুলি মোড়ানোর মাধ্যমে, আপনি আপনার কোড বা API-এর অভ্যন্তরীণ বাস্তবায়নের বিশদ প্রকাশ না করেই আরও অর্থপূর্ণ প্রসঙ্গ প্রদান করতে পারেন এবং ব্যবহারকারীদের কাছে আরও উপযুক্ত ত্রুটি বার্তা পাঠাতে পারেন৷ এটি আপনাকে কাঠামোগত এবং অভিন্ন উপায়ে ত্রুটিগুলির ধরনগুলি পরিচালনা এবং মোকাবেলা করতে দেয়৷
পাইথনে ক্লাস আচরণ কাস্টমাইজ করা
পাইথন প্রদান করে বেস এক্সেপশন ক্লাস ইনহেরিট করে, আপনি সহজ এবং দরকারী ব্যতিক্রমগুলি তৈরি করতে পারেন যা আপনার কোডে নির্দিষ্ট ত্রুটি ঘটলে আপনি বাড়াতে পারেন। আপনি জাদু বা ডান্ডার পদ্ধতির সাহায্যে আপনার ব্যতিক্রম ক্লাসের জন্য কাস্টম আচরণ প্রয়োগ করতে পারেন।