পাইথনে ব্যতিক্রমগুলি কীভাবে পরিচালনা করবেন

পাইথনে ব্যতিক্রমগুলি কীভাবে পরিচালনা করবেন

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





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





এখানে, আমরা পাইথনে ব্যতিক্রমগুলি কীভাবে পরিচালনা করতে পারি তা একবার দেখে নেব।





পাইথনে ব্যতিক্রম হ্যান্ডলিং কীভাবে কাজ করে

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

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



পাইথন প্রোগ্রামিংয়ে আপনার কখন ব্যতিক্রমগুলি ব্যবহার করা উচিত?

বেশিরভাগ ক্ষেত্রে, আপনি ব্যতিক্রমগুলি ব্যবহার করে আদর্শ পাইথন ত্রুটিগুলি মুখোশ করতে পারেন। তবে আপনাকে সতর্ক থাকতে হবে, কারণ এটি করা ডিবাগিং সমস্যার কারণ হতে পারে। ফলস্বরূপ, একটি চূড়ান্ত বাগের মূল কারণ খুঁজে বের করা আপনার পক্ষে কঠিন হতে পারে।

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





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

পাইথন ব্যতিক্রমগুলি পরিচালনা করা

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





পাইথন ব্যতিক্রমগুলির কোডিং ধারণাটি সাধারণত এইরকম দেখাচ্ছে:

try:
'code to be executed'
except:
'error message'

পূর্বে উল্লিখিত হিসাবে, আপনি ব্যবহার করতে পারেন অবশেষে একটি ব্যতিক্রম ব্লকে। কিন্তু আপনি যে কোডটি ভিতরে লিখবেন a অবশেষে ধারা স্বাধীন এবং একটি ব্যতিক্রম আছে কিনা তা চালায়।

সংক্ষেপে, এটি আপনার কাজে আসে যদি আপনার কোডের আরেকটি ব্লক থাকে যা আপনি ক্রমাগত চালাতে চান নির্বিশেষে চেষ্টা করুন ... ছাড়া ব্লক

এখানে একটি উদাহরণ:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

উপরের কোডে, অনুগ্রহ করে পুনরায় চালু করুন ব্যতিক্রম আছে কিনা তা নির্বিশেষে চলতে থাকে।

একটি অন্য শর্তটিও অনুসরণ করতে পারে ছাড়া বিবৃতি:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

এখন 'B' সংজ্ঞায়িত করে আবার চেষ্টা করুন:

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7

উপরের উদাহরণগুলি মানহীন ব্যতিক্রম। কিন্তু যখন আপনি মানসম্মত ব্যতিক্রমগুলির সাথে অন্তর্নির্মিত (সংজ্ঞায়িত) ব্যতিক্রমগুলি একত্রিত করেন তখন আপনার আরও স্পষ্ট ব্যতিক্রম থাকতে পারে:

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

উপরের ব্যতিক্রমটি প্রথমে পরীক্ষা করে যে সেখানে আছে কিনা নাম ত্রুটি মধ্যে চেষ্টা করুন ব্লক এটি তখন স্ট্যান্ডার্ড প্রিন্ট করে নাম ত্রুটি ব্যতিক্রম প্রথমে ('নাম' B 'সংজ্ঞায়িত নয়')। এবং এটি আপনার লিখিত ব্যতিক্রম সহ সমর্থন করে ('B সংজ্ঞায়িত করা প্রয়োজন, দয়া করে')।

সম্পর্কিত: মৌলিক প্রোগ্রামিং নীতিগুলি প্রতিটি প্রোগ্রামারকে অবশ্যই জানতে হবে

নীচের বারটি উইন্ডোজ 10 এ কাজ করছে না

এবং যদি আপনি ব্যতিক্রমের একটি শৃঙ্খলা পরিচালনা করতে চান, তাহলে আপনি একটি চেষ্টা করুন অনেকের সাথে ব্লক ছাড়া বিবৃতি এটি বেশ সহজ যদি আপনার চেষ্টা করুন ব্লকের অনেক ব্যতিক্রম থাকার সম্ভাবনা রয়েছে:

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

যদি বিভাগটি বৈধ হয়? উদাহরণস্বরূপ, প্রতিস্থাপন F = 7/0 সঙ্গে উপরের কোডে F = 7/5 দেয়:

Output: Operation successfull! The results are: 7, 6.0, and 1.4

পাইথনে ব্যবহারকারীর সংজ্ঞায়িত ব্যতিক্রম

আপনিও আপনার ব্যতিক্রম নিয়ে আসতে পারেন এবং পরে আপনার প্রোগ্রামে তাদের কল করতে পারেন। এটি আপনাকে আপনার ব্যতিক্রমের একটি সুনির্দিষ্ট বিবরণ দিতে এবং আপনার পছন্দ মতো নাম দিতে দেয়।

তবুও, প্রতিটি ব্যবহারকারী-সংজ্ঞায়িত ব্যতিক্রম (প্রত্যক্ষ বা পরোক্ষভাবে) এখনও অন্তর্নির্মিত থেকে আসে ব্যতিক্রম পাইথনের ক্লাস।

নীচের উদাহরণ কোডটি বেসের রেফারেন্স দেয় ব্যতিক্রম সরাসরি কল করে রানটাইম ত্রুটি ইহা হতে:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

মনে রাখবেন যে সংযোগ ত্রুটি , এই ক্ষেত্রে, একটি ব্যবহারকারী-সংজ্ঞায়িত শ্রেণী, যা আপনি আপনার প্রোগ্রামে যেকোনো সময় প্রয়োজন হলে বাড়াতে পারেন।

সম্পর্কিত: পাইথনের সাথে রেগুলার এক্সপ্রেশন এর শিক্ষানবিস গাইড

আপনি সরাসরি ব্যবহারকারীর দ্বারা নির্ধারিত ব্যতিক্রম করতে পারেন ব্যতিক্রম বেস ক্লাস। নিচের ব্যতিক্রমটি অবশ্য 6 থেকে 5 এর বিয়োগকে বাধা দেয় এবং সরাসরি বেস ক্লাস থেকে ব্যতিক্রমকে কল করে:

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

অনুশীলনে, আপনি পূর্বে সংজ্ঞায়িত ব্যতিক্রমটি অন্য ফাংশনে কল করে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি একটি তৈরি করতে পারেন floatError যে শুধুমাত্র দুটি ভাসা যোগ করার অনুমতি দেয়:

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

কারণ আপনি এখন একটি সংজ্ঞায়িত করেছেন FloatError ক্লাস, পাইথন এটি উত্থাপন করে যদি আপনি ব্যবহার করে দুটি নন-ফ্লোট লিটারেল যুক্ত করার চেষ্টা করেন addtwoFloat ফাংশন

আপনি প্রিন্ট করতে পারেন FloatError একই পাইথন ফাইলের ক্লাস যেখানে আপনি এটি তৈরি করেছেন তা দেখার জন্য:

print(FloatError)
Output:

FloatError যাইহোক, একটি অন্তর্নির্মিত পাইথন ব্যতিক্রম নয়। আপনি কল করে এটি যাচাই করতে পারেন FloatError আরেকটি নতুন পাইথন ফাইলে যেখানে আপনি এই ক্লাসটি তৈরি করেননি:

print(FloatError)
Output: NameError: name 'FloatError' is not defined

আপনি একটি পান নাম ত্রুটি কারণ পাইথন এটিকে একটি আদর্শ ব্যতিক্রম হিসাবে স্বীকৃতি দেয় না।

আপনি অন্যান্য ত্রুটি ক্লাসগুলিকে কীভাবে স্বয়ংক্রিয়ভাবে নির্ধারণ করতে পারেন তা দেখতে পারেন।

ব্যতিক্রমগুলি সহ আপনার পাইথন প্রোগ্রামগুলিকে আরও ব্যবহারকারী বান্ধব করুন

পাইথনে অনেক স্ট্যান্ডার্ড ব্যতিক্রম আছে। কিন্তু আপনি আপনার সংজ্ঞা দিতে পারেন। তা সত্ত্বেও, আপনার প্রোগ্রামটি ব্যবহার করার সহজতা কিছুটা নির্ভর করে কিভাবে এটি বিভিন্ন ব্যতিক্রমগুলি পরিচালনা করে (ব্যবহারকারী-নির্ধারিত, অ-নির্দিষ্ট, বা মান)।

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

শেয়ার করুন শেয়ার করুন টুইট ইমেইল কিভাবে আপনার পাইথন কোড ডিবাগ করবেন

আপনার পথের প্রতিটি পাইথন বাগকে কীভাবে স্কোয়াশ করতে হয় তার সাথে নিজেকে সজ্জিত করুন।

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • প্রোগ্রামিং
  • পাইথন
  • কোডিং টিউটোরিয়াল
লেখক সম্পর্কে ইডিসু ওমিসোলা(94 নিবন্ধ প্রকাশিত)

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

Idowu Omisola থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন