why do some exceptions only occur in debug mode?

03-19-2016 08:52 PM
New Contributor II

Why do some tools generate exceptions only while debugging? In other words, when the tool is "run" in ArcMap (10.3.1), the process completes smoothly and as expected, but when "debug" is selected, an exception gets raised - most recently it was:

ExecuteError: ERROR 00464: Cannot get exclusive schema lock. Either being edited or in use by another application. Failed to execute (Near).

The offending call was the Near_analysis in line 24 in the code below

import arcpy
from arcpy import env

debug = arcpy.GetParameterAsText(2)
if (debug == 'true'):
 mxdfile = arcpy.GetParameterAsText(3)
 mxd = arcpy.mapping.MapDocument(mxdfile)
 mxd = arcpy.mapping.MapDocument("CURRENT")

mappolyfc = arcpy.GetParameterAsText(1)
fcs = arcpy.GetParameter(0)
dsource1 = fcs[0].workspacePath
fcs = arcpy.GetParameterAsText(0).split(';') # feature classes multivalue parameter
env.workspace = dsource1
f, fldlist = None, None
# now process each feature class in fcs
for fc in fcs:
    arcpy.AddMessage("Processing " +fc)

    result = arcpy.Near_analysis(fc,mappolyfc)

##  omitted other code......

result = arcpy.RefreshActiveView()

del mxd

Such behavior (raising exceptions only in debug mode) have happened frequently on several projects with various geoprocessing tools and it starts to get wacky! Sometimes the behavior changes after version updates, too.

Any suggestions?  Surely others are experiencing similar behavior?

0 Kudos
1 Reply
MVP Esteemed Contributor

in your omitted code section are there try except blocks? I don't know if it is IDE dependent, but I quit using them a long time ago and just learned how to read the errors that appear.  I rapidly get the old "in use by other..." error message followed by the litany of the errors history.  I have just gotten used to interpreting.  I use Pythonwin and Pyscripter... can't say which throws the errors the best (if any)

PS  8. Errors and Exceptions — Python 3.5.1 documentation

those try except blocks are only useful, in my mind, in figuring out how to handle the exception.  I just want to fix it and I personally haven't seen a need to carry on if something isn't going to work. Of

0 Kudos