আমি কীভাবে এক লাইনে একাধিক ব্যতিক্রম ধরব (ব্লক ব্যতীত)
এটা কর:
try:
may_raise_specific_errors():
except (SpecificErrorOne, SpecificErrorTwo) as error:
handle(error) # might log or have some other default behavior...
পুরানো সিনট্যাক্সের কারণে প্রথম বন্ধনীগুলি আবশ্যক যা কোনও নামতে ত্রুটিযুক্ত বস্তু নির্ধারণের জন্য কমা ব্যবহার করেছিল। মূল as
শব্দটি অ্যাসাইনমেন্টের জন্য ব্যবহৃত হয়। ত্রুটিযুক্ত বস্তুর জন্য আপনি যে কোনও নাম ব্যবহার করতে পারেন, আমি error
ব্যক্তিগতভাবে পছন্দ করি ।
ভাল অভ্যাস
পাইথনের সাথে সামঞ্জস্যপূর্ণ পদ্ধতিতে এটি করার জন্য আপনাকে ব্যতিক্রমগুলি কমা দিয়ে আলাদা করতে হবে এবং পূর্বের সিনট্যাক্স থেকে পৃথক করার জন্য তাদের প্রথম বন্ধনীর সাহায্যে আবদ্ধ করতে হবে যা ব্যতিক্রমের নামের সাথে একটি ব্যতিক্রমের নামের সাথে ধরা পড়ার পরে অনুসরণ করতে পারে a কমা।
সাধারণ ব্যবহারের উদাহরণ এখানে:
import sys
try:
mainstuff()
except (KeyboardInterrupt, EOFError): # the parens are necessary
sys.exit(0)
আমি বাগগুলি আড়াল করতে এড়াতে কেবল এই ব্যতিক্রমগুলি উল্লেখ করছি, যা যদি আমার মুখোমুখি হয় তবে আমি পুরো স্ট্যাক ট্রেসটি আশা করব।
এটি এখানে নথিভুক্ত করা হয়েছে: https://docs.python.org/tutorial/erferences.html
আপনি কোনও চলকটিতে ব্যতিক্রমটি বরাদ্দ করতে পারেন, ( e
সাধারণ তবে আপনি যদি দীর্ঘ ব্যতিক্রম হ্যান্ডলিং করতে থাকেন বা আপনার আইডিই কেবল তার চেয়ে বড় নির্বাচনগুলিকে হাইলাইট করে তবে আপনি আরও ভার্বোস ভেরিয়েবলটি পছন্দ করতে পারেন)) উদাহরণটিতে একটি আরগস বৈশিষ্ট্য রয়েছে। এখানে একটি উদাহরণ:
import sys
try:
mainstuff()
except (KeyboardInterrupt, EOFError) as err:
print(err)
print(err.args)
sys.exit(0)
দ্রষ্টব্য যে পাইথন 3 এ, err
অবরুদ্ধকরণটি শেষ হওয়ার পরে অবজেক্টটি সুযোগের বাইরে চলে যায় except
।
অসমর্থিত
আপনি এমন কোড দেখতে পাচ্ছেন যা কমা দিয়ে ত্রুটিটি নির্ধারণ করে। পাইথন ২.৫ এবং তার আগে পাওয়া একমাত্র ফর্মটি এই ব্যবহারটি অবহিত করা হয়েছে এবং আপনি যদি কোডটি পাইথন 3 তে সামঞ্জস্যপূর্ণ করতে চান তবে নতুন রূপটি ব্যবহার করার জন্য আপনার বাক্য গঠনটি আপডেট করতে হবে:
import sys
try:
mainstuff()
except (KeyboardInterrupt, EOFError), err: # don't do this in Python 2.6+
print err
print err.args
sys.exit(0)
আপনি যদি আপনার কোডবেসে কমা নামের অ্যাসাইনমেন্টটি দেখেন এবং আপনি পাইথন 2.5 বা ততোধিক ব্যবহার করছেন তবে এটি করার নতুন পদ্ধতিতে স্যুইচ করুন যাতে আপনি আপগ্রেড করার সময় আপনার কোডটি সামঞ্জস্য বজায় থাকে।
suppress
প্রসঙ্গ ব্যবস্থাপক
গৃহীত উত্তরটি সত্যই 4 টি লাইনের কোড, ন্যূনতম:
try:
do_something()
except (IDontLikeYouException, YouAreBeingMeanException) as e:
pass
try
, except
, pass
লাইনের একটি একক লাইন পরিচালিত করা যেতে পারে দমন প্রসঙ্গে পরিচালক, পাইথন 3.4 পাওয়া :
from contextlib import suppress
with suppress(IDontLikeYouException, YouAreBeingMeanException):
do_something()
সুতরাং আপনি যখন pass
কিছু ব্যতিক্রম করতে চান , ব্যবহার করুন suppress
।