Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Diagnostics;
- using System.IO;
- namespace ConsoleApplication37 {
- public interface IArgumentNullException {
- string Message { get; }
- }
- public interface IArgumentOutOfRangeException {
- string Message { get; }
- }
- public interface IApplicationException {
- string Message { get; }
- }
- public interface IIOException {
- string Message { get; }
- }
- public class ArgumentNullException2 : ArgumentNullException, IArgumentNullException {
- }
- public class ArgumentOutOfRangeException2 : ArgumentOutOfRangeException, IArgumentOutOfRangeException {
- }
- public class ApplicationException2 : ApplicationException, IApplicationException {
- }
- public class IOException2 : IOException, IIOException {
- }
- class Program {
- static void Main(string[] args) {
- WithCatch(10000);
- Console.WriteLine();
- WithAs(10000);
- Console.WriteLine();
- WithCatch(10000);
- Console.WriteLine();
- WithAs(10000);
- Console.WriteLine();
- Console.WriteLine("Press a key to exit");
- Console.ReadKey();
- }
- public static void MadThrower(Random rnd) {
- int num = rnd.Next(5);
- switch (num) {
- case 0:
- throw new ArgumentNullException2();
- case 1:
- throw new ArgumentOutOfRangeException2();
- case 2:
- throw new ApplicationException2();
- case 3:
- throw new IOException2();
- case 4:
- throw new Exception();
- }
- }
- static void WithCatch(int times) {
- int[] nums = new int[5];
- string lastMessage = null;
- int repeats = 0;
- var rnd = new Random(0);
- Stopwatch sw = Stopwatch.StartNew();
- for (int i = 0; i < times; i++) {
- try {
- MadThrower(rnd);
- } catch (ArgumentNullException2 ex) {
- if (ex.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex.Message;
- nums[0]++;
- } catch (ArgumentOutOfRangeException2 ex) {
- if (ex.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex.Message;
- nums[1]++;
- } catch (ApplicationException2 ex) {
- if (ex.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex.Message;
- nums[2]++;
- } catch (IOException2 ex) {
- if (ex.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex.Message;
- nums[3]++;
- } catch (Exception ex) {
- if (ex.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex.Message;
- nums[4]++;
- }
- }
- sw.Stop();
- for (int i = 0; i < nums.Length; i++) {
- Console.Write("{0} ", nums[i]);
- }
- Console.Write(repeats);
- Console.WriteLine();
- Console.WriteLine("Catch - Times {0} - ms {1}", times, sw.ElapsedMilliseconds);
- }
- static void WithAs(int times) {
- int[] nums = new int[5];
- string lastMessage = null;
- int repeats = 0;
- var rnd = new Random(0);
- Stopwatch sw = Stopwatch.StartNew();
- for (int i = 0; i < times; i++) {
- try {
- MadThrower(rnd);
- } catch (Exception ex) {
- while (true) {
- {
- var ex2 = ex as IArgumentNullException;
- if (ex2 != null) {
- if (ex2.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex2.Message;
- nums[0]++;
- break;
- }
- }
- {
- var ex2 = ex as IArgumentOutOfRangeException;
- if (ex2 != null) {
- if (ex2.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex2.Message;
- nums[1]++;
- break;
- }
- }
- {
- var ex2 = ex as IApplicationException;
- if (ex2 != null) {
- if (ex2.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex2.Message;
- nums[2]++;
- break;
- }
- }
- {
- var ex2 = ex as IIOException;
- if (ex2 != null) {
- if (ex2.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex2.Message;
- nums[3]++;
- break;
- }
- }
- {
- if (ex.Message == lastMessage) {
- repeats++;
- }
- lastMessage = ex.Message;
- nums[4]++;
- break;
- }
- }
- }
- }
- sw.Stop();
- for (int i = 0; i < nums.Length; i++) {
- Console.Write("{0} ", nums[i]);
- }
- Console.Write(repeats);
- Console.WriteLine();
- Console.WriteLine("As - Times {0} - ms {1}", times, sw.ElapsedMilliseconds);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement