เป็นวิธีปฏิบัติที่ดีกว่ามากในการหลีกเลี่ยงการใช้ sys.exit () และแทนที่จะเพิ่ม / จัดการข้อยกเว้นเพื่อให้โปรแกรมเสร็จสิ้นอย่างสมบูรณ์ หากคุณต้องการปิดการสืบค้นกลับเพียงใช้:
sys.trackbacklimit=0
คุณสามารถตั้งค่านี้ที่ด้านบนสุดของสคริปต์ของคุณเพื่อกำจัดเอาต์พุตการติดตามย้อนกลับทั้งหมด แต่ฉันชอบที่จะใช้เท่าที่จำเป็นมากขึ้นเช่น "ข้อผิดพลาดที่รู้จัก" ที่ฉันต้องการให้เอาต์พุตสะอาดเช่นในไฟล์ foo.py:
import sys
from subprocess import *
try:
check_call([ 'uptime', '--help' ])
except CalledProcessError:
sys.tracebacklimit=0
print "Process failed"
raise
print "This message should never follow an error."
ถ้า CalledProcessError ถูกจับเอาท์พุทจะเป็นดังนี้:
[me@test01 dev]$ ./foo.py
usage: uptime [-V]
-V display version
Process failed
subprocess.CalledProcessError: Command '['uptime', '--help']' returned non-zero exit status 1
หากข้อผิดพลาดอื่น ๆ เกิดขึ้นเรายังคงได้รับผลลัพธ์การติดตามย้อนกลับแบบเต็ม