So, if this were wrapped in a function, it would look something like this (untested):
def table_has_row(table, possibly_stale_row_ref):
"""Returns a boolean."""
try:
return table.has_row(possibly_stale_row_ref)
except anvil.tables.TableError as err:
if "This row has been deleted" in str(err):
return False # row was stale
raise
except AttributeError as err:
if "'LiveObjectProxy' object has no attribute 'has_record'" in str(err):
return False # row was stale
raise