Na minha experiência, qualquer erro detectado em uma tentativa de captura em um gatilho reverterá toda a transação; você pode usar uma transação de salvamento. Eu acho que você precisa olhar para o que está acontecendo em "Um pouco mais de sql" e determinar se você pode escrever instruções case/if em torno dele para parar o erro.
O que você pode fazer dependendo do que está fazendo é usar uma transação e capturar isso na captura
No seu código algo assim
SAVE TRANSACTION BeforeUpdate;
BEGIN TRY
--Some More SQL
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION BeforeUpdate;
return
END CATCH