MERGE, as with all other DML statements (INSERT, UPDATE, DELETE) is an all or nothing proposition - either it succeeds in it's entirety, or it fails (and the implicit transaction it's running within, if such a one has been opened, is rolled back).
If there are going to be actual errors (e.g. broken foreign key constraints, check constraints, truncation), you need to deal with these beforehand, or alter your MERGE so that the error will not occur (e.g. explicitly truncate overlong data). If the source of your MERGE statement is a complex query, and the data cleanup is likely to be complex, you might want to stage the results into a temporary table to perform such cleanup.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…