Problem/Motivation
Looking at the code in MigrateExecutable, it looks like MigrateDestinationInterface::import() can throw a MigrateException.
Furthermore, while simply throwing a MigrateException causes the row to be considered to have failed, MigrateException's constructor allows a MigrateIdMapInterface status constant to be passed, so a destination plugin can do this to skip a row:
throw new MigrateException("My message.", 0, NULL, MigrationInterface::MESSAGE_ERROR, MigrateIdMapInterface::STATUS_IGNORED);
This should be documented in MigrateDestinationInterface::import().