I've recently encountered this weird behavior of [TRY_CAST](https://learn.microsoft.com/en-us/sql/t-sql/functions/try-cast-transact-sql?view=sql-server-ver16) function, and I wonder what's going on here. (It feels like bug, but most of such bugs I have encountered in past were actually intentional.)

When I use the function on string column or variable longer than 4000 characters, I get an error: *String or binary data would be truncated*.
```
DECLARE @string NVARCHAR(MAX) = REPLICATE('x', 4001); 

SELECT TRY_CAST(@string AS INT);
```
The weird thing is, when i take the literal string and put it into the function, it works fine (it returns NULL).

What is happening here?