// $Id: exceptions.csharp,v 1.0 2002/09/28 10:21:00 dada Exp $ // http://dada.perl.it/shootout/ // contributed by Erik Saltwell using System; namespace Exceptions { class LoException : System.Exception { public LoException(){} } class HiException : System.Exception { public HiException(){} } public class App { static int Lo = 0; static int Hi = 0; static int count=0; public static void Main(string[] args) { int n = int.Parse(args[0]); for (count=0; count<n; count++) { SomeFunction(); } System.Text.StringBuilder bldr = new System.Text.StringBuilder(100); bldr.Append("Exceptions: HI=").Append(Hi).Append(" / LO=").Append(Lo); Console.WriteLine(bldr.ToString()); } public static void SomeFunction() { try { HiFunction(); } catch (Exception e) { Console.WriteLine("We shouldn't get here: " + e.Message); } } public static void HiFunction() { try { LoFunction(); } catch (HiException) { Hi++; } } public static void LoFunction() { try { BlowUp(); } catch (LoException) { Lo++; } } public static void BlowUp() { if ((count & 1) == 0) { throw new LoException(); } else { throw new HiException(); } } } }