It's documented with each implementation. There's not an exhaustive list as the operator can be overloaded, so thoeretically any exception could be thrown. The operator is typically documented as an Item
property.
Here's some documentation on specific uses:
However, you should not need an exhaustive list on what could be thrown. Exceptions are typically caught for one of two reasons: either you want to do something about it (like the days before TryParse
when catching an exception was the simplest way to catch a bad date format) or you just want to note that an exception occured and log it, in which case you typically rethow the actual exception.
Catching specific exceptions is good for the former case. For example if you catch a NullReferenceException
it's typically to re-throw a different exception that indicates which reference is null (since this is not part of the stock NullReferenceException)
.
In the latter case, Catching a generic Exception
is fine if you just want to log and re-throw since there's likely nothing else you can do about it.