I find your version a lot more difficult to understand because now the setup is protected against failure that should not go wrong. Perhaps none of the code should have a try catch but perhaps we should have 2 tests:

testAdd_whenExceedingMaximumCapacity

and

testAdd_whenReachingMaximumCapacity

So with the reaching max capacity, there should not be any exception. And because you tested that this flow doesn't throw an exception, it doesn't need to be protected against failure in testAdd_whenExceedingMaximumCapacity