উত্তর:
আর্কপাই উদাহরণ থেকে দেখে মনে হচ্ছে sys.exit()
কোনও স্ক্রিপ্ট শুরুর সঠিক উপায়।
পাইথন ডকুমেন্টেশন নোট যে sys.exit()
:
সিস্টেমএক্সিট ব্যতিক্রম উত্থাপনের মাধ্যমে প্রয়োগ করা হয়, সুতরাং চেষ্টা স্টেটমেন্টের পরিশেষে ক্লজগুলি দ্বারা নির্দিষ্ট ক্লিনআপ ক্রিয়াকলাপগুলি সম্মানিত হয়, এবং বহিরাগত স্তরে প্রস্থান প্রয়াসকে থামানো সম্ভব।
এটির সাথে মোকাবিলা করার সহজ উপায়টি হ'ল একটি ব্যতিক্রম হ্যান্ডলারটিতে আপনার স্ক্রিপ্টটি মোড়ানো:
import sys
import arcpy
try:
#do stuff
sys.exit(0)
except SystemExit:
pass
তবে এটি বিশেষভাবে মার্জিত নয় এবং আপনার পুরো প্রকল্পটির পুনর্গঠন প্রয়োজন, অন্য স্তর ইন্ডেন্টেশন উল্লেখ না করে। এছাড়াও, আপনার কোডের অন্য একটি অংশ একটি SystemExit
ব্যতিক্রম উত্থাপন করে এমন সম্ভাব্য পরিস্থিতিতে আপনি কখনই এটি সম্পর্কে জানবেন না ... অন্য অবহেলিত তবে সম্ভবত আরও ভাল সমাধানটি অন্য ফাংশনে sys.exit () এ কল মোড়ানো:
import sys
import arcpy
def finish(arg=None):
try:
sys.exit(arg)
except SystemExit:
pass
#do stuff
finish()
এখন আপনি কল করতে পারেন finish()
, finish(1)
অথবাfinish('Error message')
আপনি sys.exit কল করতে পারবেন বলে আশা করা ঠিক ()।
অবশ্যই, আমরা অন্যান্য পরিস্থিতিতে আমাদের ব্যতিক্রম খাবারের পদ্ধতিকে ব্যবহার করতে চাই এবং এটি পাইথন হওয়ায় আমরা সাধারণীকরণ করতে পারি এবং একটি দরকারী, বহুমুখী সাজসজ্জা তৈরি করতে পারি:
import sys
import arcpy
def eat_exception(fn, exception):
def safe(*v, **k):
try:
fn(*v, **k)
except exception:
pass
return safe
finish = eat_exception(sys.exit, SystemExit)
#do stuff
finish()