using System; using System.Collections.Generic; using System.Diagnostics; namespace Articulos.Cap04.Excepciones.Parte2 { public sealed class TryXxxVsExcepciones { public static void Main() { // Creación del diccionario: Dictionary abrirCon = new Dictionary(); // Agregación de extensiones: abrirCon.Add (".html", "Internet Explorer"); abrirCon.Add (".cs", "Notepad++ Portable (PortableApps Launcher)"); abrirCon.Add (".mp3", "Winamp"); abrirCon.Add (".camrec", "Camtasia Studio"); abrirCon.Add (".jpg", "Pain.NET"); // Uso del patrón TryXXX: Console.WriteLine ("\nUso del patrón TryXXX:"); string aplicacion = String.Empty; Stopwatch cronometro = new Stopwatch(); cronometro.Start(); for (int i = 1; i <= 1000; ++i) { abrirCon.TryGetValue (".tif", out aplicacion); } cronometro.Stop(); // Muestra los resultados de las ejecuciones del método TryGetValue: Console.WriteLine ("\tTiempo transcurrido: {0}ms", cronometro.Elapsed.TotalMilliseconds.ToString()); // Uso del modo de acceso basado en indizador ('indexer'). // Este modo genera una excepción si la aplicación a la // extensión pasada como índice no existe: Console.WriteLine ("\nUso del modo de acceso basado en indizador:"); cronometro.Reset(); cronometro.Start(); for (int i = 1; i <= 1000; ++i) { try { aplicacion = abrirCon[".tif"]; } catch (KeyNotFoundException) { // Captura de la excepción. } } cronometro.Stop(); // Muestra los resultados de las ejecuciones en excepciones: Console.WriteLine ("\tTiempo transcurrido: {0}ms\n", cronometro.Elapsed.TotalMilliseconds.ToString()); } } }