This is a general design question, but I'm focusing on C# and .NET because those are the languages I'm working with right now.Should I create my own, new exception classes, or co-opt existing framework exceptions for slightly different purposes? For example, I'm finding myself needing an exception that indicates a member (that is, of a type for example) was expected, but has not been found while reading an assembly using Mono.Cecil. The base class library defines the exception MissingMemberException, which seems to communicate exactly what I want, but the description says:The exception that is thrown when there is an attempt to dynamically  access a class member that does not exist.Which doesn't fit exactly, because I'm not dynamically accessing the member, but rather working with the assembly passively.
Should I make my own exceptions, or co-opt similar exceptions for slightly non-standard purposes?
c#;object oriented;.net;exceptions