I am a novice at programming but have been successful at writing some python code. I am trying to write a custom error handler and have the error msg displayed in the in tool's process dialog box. Message will print in python shell but not in process dialog box when run from a tool.
# import the required modules for the python script
import arcpy, os, sys, traceback
class NoCaseFld(Exception):
pass
# define common variables here
caseFlds = "lU_CURRENT;TRACT"
caseOrder = "tract lucurrent"
orderErr = ""
fldFound = 1
try:
# 1. If case field(s) selected, check for a specified sort order and create list object
if caseFlds != "":
if caseOrder != "":
orderUpper = caseOrder.upper()
if " " in orderUpper:
orderList = orderUpper.split(" ")
elif "," in orderUpper:
orderList = orderUpper.split(",")
elif ";" in orderUpper:
orderList = orderUpper.split(";")
else:
fldFound = -1
orderErr = caseOrder #error in reading case field order
# i. Verify sort order list values are found in case field(s) list
caseUpper = caseFlds.upper()
for f in orderList:
for c in caseUpper.split(";"):
if c == f:
fldFound = 1
continue
else:
fldFound = -1
if fldFound == -1:
orderErr = orderErr + f
if fldFound == -1:
raise NoCaseFld
except NoCaseFld:
print "Error: Case Field Name Order\nfield name(s) not found in table:\n" + orderErr
except: #error handeling code
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n " + str(sys.exc_type) + ": " + str(sys.exc_value) + "\n"
msgs = "ARCPY ERRORS:\n" + arcpy.GetMessages(2) + "\n"
arcpy.AddError(msgs)
arcpy.AddError(pymsg)
print msgs
print pymsg
arcpy.AddMessage(arcpy.GetMessages(1))
print arcpy.GetMessages(1)