Trimming the tracebacks to make it clearer:

In [19]: to_datetime(['2020-01-01', 'foo'], format='%Y-%m-%d')  # ISO, shows 'postion 1'
---------------------------------------------------------------------------

File ~/tmp/.venv/lib/python3.8/site-packages/pandas/_libs/tslib.pyx:599, in pandas._libs.tslib.array_to_datetime()

ValueError: time data "foo" at position 1 doesn't match format specified

In [20]: to_datetime(['2020-01-01', 'foo'], format='%Y-%d-%m')  # non-ISO, no position
---------------------------------------------------------------------------

File ~/tmp/.venv/lib/python3.8/site-packages/pandas/_libs/tslibs/strptime.pyx:150, in pandas._libs.tslibs.strptime.array_strptime()

ValueError: time data 'foo' does not match format '%Y-%d-%m' (match)

In [21]: to_datetime(['2020-01-01', '9999-01-01'], format='%Y-%m-%d')  # ISO, shows 'postion 1'
---------------------------------------------------------------------------

File ~/tmp/.venv/lib/python3.8/site-packages/pandas/_libs/tslibs/np_datetime.pyx:212, in pandas._libs.tslibs.np_datetime.check_dts_bounds()

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 9999-01-01 00:00:00 present at position 1

In [22]: to_datetime(['2020-01-01', '9999-01-01'], format='%Y-%d-%m')  # non-ISO, no position
---------------------------------------------------------------------------

File ~/tmp/.venv/lib/python3.8/site-packages/pandas/_libs/tslibs/np_datetime.pyx:212, in pandas._libs.tslibs.np_datetime.check_dts_bounds()

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 9999-01-01 00:00:00

Comment From: MarcoGorelli

it'd be easier to wait til #50242 is in to address this

EDIT: gonna do it the other way round - do this one before #50242