En another SO question, He visto a varias personas recomendarme usar siempre TryGetValue.¿Debo usar siempre TryGetValue para acceder a los diccionarios .net?
Aunque siempre uso TryGetValue sobre el patrón Contiene?/Acceso, evito este patrón a propósito cuando espero que la clave siempre esté en el diccionario. Luego busco un acceso directo al indexador, de modo que se genera una excepción si la clave no está allí, porque realmente sucedió algo inesperado (es decir, la clave no estaba en el diccionario mientras esperaba).
Dado que parece haber un consenso general en contra de mis "mejores prácticas" (3 de cada 4 personas en la publicación que mencioné explícitamente recomendaron usar TryGetValue en todo momento), estoy ansioso por leer una discusión extensa sobre ese tema ...
Puede agregar la clave real al mensaje de excepción si realiza TryGetValue/throw, que es algo que la excepción KeyNotFoundException predeterminada no puede hacer (a menos que me falta algo). – Skizz