Hi!
You can capture all raised errors in a table type variable.
BEGIN TRY
EXEC(@SQL)
END TRY
BEGIN CATCH
UPDATE @tFirmen SET ErrorMSG = ERROR_MESSAGE()
WHERE ID = @FirmaID
END CATCH
After execution you can handle the errors or even re-raise the original exception.