This is a "meta issue": currently I mostly throw exceptions of existing exception types from mscorlib. This isn't good in many cases, i.e. adding a few custom types would definitely make it easier to identify certain error scenarios from user code.
On a positive side, I always throw exceptions via Error.* methods, i.e. it's actually pretty easy to identify all the scenarios that would benefit from custom-typed exceptions & update them accordingly.
This is a "meta issue": currently I mostly throw exceptions of existing exception types from mscorlib. This isn't good in many cases, i.e. adding a few custom types would definitely make it easier to identify certain error scenarios from user code.
On a positive side, I always throw exceptions via Error.* methods, i.e. it's actually pretty easy to identify all the scenarios that would benefit from custom-typed exceptions & update them accordingly.