পাইথনে এক্সেপশন হ্যান্ডলিং
পাইথনে অন্যান্য প্রোগ্রামিং ভাষার তুলনায় অনেক বেশি পরিস্থিতি রয়েছে যা এক্সেপশন সৃষ্টি করে।
আসুন আমরা সেগুলি বিস্তারিতভাবে দেখি। ধরুন আমাদের একটি তালিকা আছে:
lst = [1, 2, 3]
এখন তালিকার একটি不存在 উপাদান অ্যাক্সেস করি:
print(lts[4])
কোড এক্সিকিউট করার পরে একটি এরর (এক্সেপশন) দেখাবে:
IndexError: list index out of range
কিন্তু আমাদের যদি এক্সেপশন দেখানো ছাড়াই
কাজ চালিয়ে যেতে হয়, তাহলে try-except
কনস্ট্রাকশন ব্যবহার করে এটিকে ক্যাচ করতে হবে। এর
সিনট্যাক্স নিম্নরূপ:
try:
# এক্সেপশন সৃষ্টিকারী কোড
except:
# এরর হ্যান্ডলিং
try ব্লকে সেই কোড রাখা উচিত
যা এক্সেপশন ধারণ করতে পারে। যদি
এই কোড এক্সিকিউট করার সময় কোনো
এক্সেপশন ঘটে, তাহলে কোডের এক্সিকিউশন
বন্ধ হবে না, বরং except ব্লকের
কোডে চলে যাবে। এই ব্লকে একটি মেসেজ
প্রিন্ট করা উচিত যা ঘটে যাওয়া এররের
সারাংশ যথাসম্ভব সঠিকভাবে বর্ণনা করে।
আর যদি try ব্লক এক্সিকিউট করার সময়
কোনো এক্সেপশন না ঘটে,
তাহলে মূল কোডটি শুধু এক্সিকিউট হবে, আর
except ব্লকের কোড - এক্সিকিউট হবে না।
আসুন আমরা তালিকার একটি不存在 উপাদান অ্যাক্সেস করার
এক্সেপশনটি ক্যাচ করি। এর
জন্য try ব্লকে সম্ভাব্য এরর সহ কোড
রাখি। আর except ব্লকে
কনসোলে 'error: elem is not exist'
মেসেজটি প্রিন্ট করার নির্দেশ দিই:
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
কোড এক্সিকিউট করার পরে দেখাবে:
'error: elem is not exist'
try-except কনস্ট্রাকশন শেখার পরে
আপনার লেখা কোডের স্টাইল পরিবর্তন হওয়া উচিত।
এখন যেসব জায়গায়
এক্সেপশন ঘটতে পারে, সেগুলিকে
try দিয়ে র্যাপ করতে হবে, আর except ব্লকে
এই এক্সেপশনের প্রতিক্রিয়া
লিখতে হবে।
ব্যবহারকারীর কাছ থেকে দুটি সংখ্যা নিন। একটি কে অপরটি দিয়ে ভাগ করুন। শূন্য দিয়ে ভাগ করার এক্সেপশনটি ক্যাচ করুন।
ব্যবহারকারীর কাছ থেকে একটি সংখ্যা নিন। এই সংখ্যার বর্গমূল নির্ণয় করুন। ঋণাত্মক সংখ্যার বর্গমূল নেওয়ার এক্সেপশনটি ক্যাচ করুন।
একটি তালিকা দেওয়া আছে। ব্যবহারকারীর কাছ থেকে একটি পূর্ণসংখ্যা নিন। ব্যবহারকারী যে নম্বর ইনপুট দিয়েছে, সেই নম্বরের তালিকার উপাদানটি পাওয়া যাবে। যে এক্সেপশনটি ঘটবে, যদি ব্যবহারকারী তালিকার সীমার বাইরে একটি সংখ্যা ইনপুট দেয়, সেটি ক্যাচ করুন।
নিম্নলিখিত কোডটি দেওয়া আছে:
num = '5'
res = num + 2
print(res)
এই কোডটির কী সমস্যা? এর ত্রুটিগুলি সংশোধন করুন।
নিম্নলিখিত কোডটি দেওয়া আছে:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
এই কোডটির কী সমস্যা? এর ত্রুটিগুলি সংশোধন করুন।