ฉันมีสคริปต์เครื่องมือ arcpy สำหรับ ArcGIS 10.0 ที่มีหน้าที่หลักสองประการ ผู้ใช้สามารถเลือกว่าจะรันส่วนที่สองหรือไม่ หากผู้ใช้เลือกที่จะไม่เรียกใช้ส่วนที่สองฉันเพียงต้องการเรียกใช้ฟังก์ชันการล้างข้อมูลและออกจากสคริปต์ด้วย sys.exit (0) โดยไม่ต้องมีข้อความแสดงข้อผิดพลาดปรากฏขึ้นในหน้าต่างผลลัพธ์ของเครื่องมือ มีสองเธรดหลักใน GIS-SE เกี่ยวกับการออกจากสคริปต์ arcpy แต่โซลูชันในนั้นไม่ได้ระบุถึงข้อความแสดงข้อผิดพลาดโดยเฉพาะ โครงสร้างทั่วไปของรหัสมีดังนี้:
import sys
##import arcpy
def CleanUp():
print 'Cleaning up ...\n'
def finish():
CleanUp()
print 'Exiting ...'
sys.exit(0)
do_more = False #or True ... input from user
#Section 1: do some stuff
print 'Doing some stuff ...\n'
if not do_more:
finish()
#Section 2: do more stuff
print 'doing more stuff ...'
CleanUp()
ถ้าฉันเรียกใช้รหัสนี้ในล่าม Python นอก ArcGIS / arcpy มันทำงานได้ตามที่ฉันคาดหวังออกอย่างสง่างามโดยไม่มีข้อผิดพลาด; อย่างไรก็ตามในสคริปต์ arcpy ของฉันที่มีโครงสร้างเดียวกันนี้สคริปต์จะออก แต่ข้อความแสดงข้อผิดพลาด SystemExit ถูกโพสต์ไปที่หน้าต่างผลลัพธ์ของเครื่องมือ มีวิธีที่จะทำให้สคริปต์เครื่องมือ arcpy กินข้อยกเว้นและฝังข้อความแสดงข้อผิดพลาด SystemExit หรือไม่