¿ConfigurationManager.AppSettings ["blah"] arrojará una excepción si "blah" no existe en la web / app.config?
Sinceras disculpas por la pregunta súper perezosa.
NameValueCollection.Itempropiedad ...
¿ConfigurationManager.AppSettings ["blah"] arrojará una excepción si "blah" no existe en la web / app.config?
Sinceras disculpas por la pregunta súper perezosa.
NameValueCollection.Itempropiedad ...
Respuestas:
No, vuelve null.
De la documentación de MSDN para NameValueCollection.Item Property (String) :
Precaución
Esta propiedad devuelve nulo en los siguientes casos: 1) si no se encuentra la clave especificada; y 2) si se encuentra la clave especificada y su valor asociado es nulo. Esta propiedad no distingue entre los dos casos.
No, vuelve null.
AppSettings es una NameValueCollection , según la advertencia en la página NameValueCollection . Obtenga :
Este método devuelve una referencia nula (Nothing en Visual Basic) en los siguientes casos: 1) si no se encuentra la clave especificada; y 2) si se encuentra la clave especificada y su valor asociado es una referencia nula (Nothing en Visual Basic). Este método no distingue entre los dos casos.
No, vuelve null.
ConfigurationManager.AppSettingses un NameValueCollection- de la documentación de MSDN :
El método Get no distingue entre nulo que se devuelve porque no se encuentra la clave especificada y nulo que se devuelve porque el valor asociado con la clave es nulo.
(mi énfasis)
Otras respuestas hacen referencia a la documentación de la propiedad Artículo. Es posible que no sea inmediatamente obvio por qué son relevantes mirando el siguiente fragmento de código.
ConfigurationManager.AppSettings["blah"]
La sintaxis de corchetes se usa en C # para acceder a los indexadores. Estas son propiedades especiales que permiten indexar una clase de la misma manera que una matriz. Si observa la definición de la propiedad NameValueCollection.Item , notará que no utiliza la sintaxis de propiedad normal. La palabra clave this y los parámetros del indexador se utilizan para definir esta propiedad como un indexador.
public string this[
string name
] { get; set; }
En la documentación, los indexadores se denominan implícitamente Item y los parámetros están entre corchetes.

No me queda claro por qué hubo respuestas que hicieron referencia al método Get , ¿tal vez una llama a la otra?
En cualquier caso, para responder la pregunta ...
No. No se lanzará una excepción si accede a una clave inexistente; se devolverá un valor nulo.
Aquí está la sección relevante de la documentación de propiedad NameValueCollection.Item .
Esta propiedad devuelve nulo en los siguientes casos: 1) si no se encuentra la clave especificada; y 2) si se encuentra la clave especificada y su valor asociado es nulo. Esta propiedad no distingue entre los dos casos.
Sí http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx
Editar: esto está claramente mal. A la izquierda para los comentarios útiles a continuación.
NameValueCollectionno se puede encontrar, es decir, el sistema no puede encontrar ninguna configuración. Name Value Collections no arroja una excepción cuando intenta recuperar un valor único que no existe ..