fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4.  
  5. namespace Articulos.Cap04.Excepciones.Parte2
  6. {
  7. public sealed class TryXxxVsExcepciones
  8. {
  9. public static void Main()
  10. {
  11. // Creación del diccionario:
  12. Dictionary<string, string> abrirCon = new Dictionary<string, string>();
  13.  
  14. // Agregación de extensiones:
  15. abrirCon.Add (".html", "Internet Explorer");
  16. abrirCon.Add (".cs", "Notepad++ Portable (PortableApps Launcher)");
  17. abrirCon.Add (".mp3", "Winamp");
  18. abrirCon.Add (".camrec", "Camtasia Studio");
  19. abrirCon.Add (".jpg", "Pain.NET");
  20.  
  21. // Uso del patrón TryXXX:
  22. Console.WriteLine ("\nUso del patrón TryXXX:");
  23. string aplicacion = String.Empty;
  24.  
  25. Stopwatch cronometro = new Stopwatch();
  26.  
  27. cronometro.Start();
  28.  
  29. for (int i = 1; i <= 1000; ++i)
  30. {
  31. abrirCon.TryGetValue (".tif", out aplicacion);
  32. }
  33.  
  34. cronometro.Stop();
  35.  
  36. // Muestra los resultados de las ejecuciones del método TryGetValue:
  37. Console.WriteLine ("\tTiempo transcurrido: {0}ms", cronometro.Elapsed.TotalMilliseconds.ToString());
  38.  
  39. // Uso del modo de acceso basado en indizador ('indexer').
  40. // Este modo genera una excepción si la aplicación a la
  41. // extensión pasada como índice no existe:
  42. Console.WriteLine ("\nUso del modo de acceso basado en indizador:");
  43.  
  44. cronometro.Reset();
  45. cronometro.Start();
  46.  
  47. for (int i = 1; i <= 1000; ++i)
  48. {
  49. try
  50. {
  51. aplicacion = abrirCon[".tif"];
  52. }
  53. catch (KeyNotFoundException)
  54. {
  55. // Captura de la excepción.
  56. }
  57. }
  58. cronometro.Stop();
  59.  
  60. // Muestra los resultados de las ejecuciones en excepciones:
  61. Console.WriteLine ("\tTiempo transcurrido: {0}ms\n", cronometro.Elapsed.TotalMilliseconds.ToString());
  62. }
  63. }
  64. }
Success #stdin #stdout 0.05s 34080KB
stdin
Standard input is empty
stdout
Uso del patrón TryXXX:
	Tiempo transcurrido: 0.3601ms

Uso del modo de acceso basado en indizador:
	Tiempo transcurrido: 4.1979ms