namespace AddisonWesley.Michaelis.EssentialCSharp.Chapter11.Listing11_02
{
#pragma warning disable 0168 // Wyłączenie ostrzeżeń dotyczących nieużywanych zmiennych
    using AddisonWesley.Michaelis.EssentialCSharp.Chapter11.Listing11_01;
    using System;
    using System.ComponentModel;

    public sealed class Program
    {
        public static void Main(string[] args)
        {
            try
            {
                throw new Win32Exception(42);
                //TextNumberParser.Parse("minus czterdzieści dwa");
                // ...
                throw new InvalidOperationException(
        "Dowolny wyjątek");
                // ...
            }
            catch(Win32Exception exception) 
                when(args.Length == exception.NativeErrorCode)
            {

            }
            catch(NullReferenceException exception)
            {
                // Obsługa wyjątków typu NullReferenceException
            }
            catch (ArgumentException exception)
            {
                // Obsługa wyjątków typu ArgumentException
            }
            catch (InvalidOperationException exception)
            {
                // Obsługa wyjątków typu ApplicationException
            }
            catch (Exception exception)
            {
                // Obsługa wyjątków typu Exception
            }
            finally
            {
                // Tu umieść kod porządkujący zasoby. Ten kod 
                // jest wykonywany niezależnie od tego, czy wystąpił wyjątek.
            }
        }
    }
}