예제 #1
0
        public NecklaceController(Necklace necklace) // check for null
        {
            if (necklace == null)
            {
                throw new ArgumentNullException(nameof(necklace), "объект типа necklace не может быть null");
            }

            Necklace = necklace;
        }
예제 #2
0
        static void Main(string[] args)
        {
            int exeptionCounter = 0;

            try
            {
                // инициализация объектов
                var stone1 = new Stone {
                    Color = "Белый", Price = 20, Status = ProductStatus.Ready, Weight = 100
                };
                var pStone1 = new PreciousStone {
                    Color = "Желтый", Price = 40, Status = ProductStatus.Ready, Weight = 40
                };
                var ruby1 = new Ruby {
                    Price = 57, Status = ProductStatus.None, Weight = 30
                };
                var diamond1 = new Diamond {
                    Price = 89, Status = ProductStatus.Ready, Weight = 28
                };
                var spStone1 = new SemiPreciousStone {
                    Color = "Зелёный", Price = 30, Status = ProductStatus.None, Weight = 41
                };
                var nefrit1 = new Nefrit {
                    Price = 50, Status = ProductStatus.Ready, Weight = 44
                };

                List <Stone> stones = new List <Stone> {
                    stone1, spStone1, pStone1, nefrit1, ruby1, diamond1
                };
                var necklace   = new Necklace(stones);
                var controller = new NecklaceController(necklace);


                Console.WriteLine("Тест диапазона (ArgumentRangeException)");
                try { controller.GetStonesByOpacity(3, 1); }
                catch (ArgumentRangeException e)
                {
                    exeptionCounter++;
                    Console.WriteLine($"Обработано исключение: {e}");
                }

                Console.WriteLine("\nТест отрицательного аргумента (ArgumentRangeException)");
                try { diamond1.DamageTest(-10); }
                catch (NegativeArgumentException e)
                {
                    exeptionCounter++;
                    Console.WriteLine($"Обработано исключение: {e}");
                }

                Console.WriteLine("\nТест на пустую или null-строку (StringNullOrEmptyException)");
                try
                {
                    ruby1.Color = null;
                    ruby1.Color = "";
                }
                catch (StringNullOrEmptyException e)
                {
                    exeptionCounter++;
                    Console.WriteLine($"Обработано исключение: {e}");
                }

                Console.WriteLine("\nТест на вхождение индекса в диапазон (IndexOutOfRangeException  - стандартное исключение)");
                try { necklace[10] = new Stone(); }
                catch (IndexOutOfRangeException e)
                {
                    exeptionCounter++;
                    Console.WriteLine($"Обработано исключение: {e}");
                }

                Console.WriteLine("\nТест на null-аргумент (ArgumentNullException - стандартное исключение)");
                try { necklace.Add(null); }
                catch (ArgumentNullException e)
                {
                    exeptionCounter++;
                    Console.WriteLine($"Обработано исключение: {e}");
                }

                Console.WriteLine("Тест Debug.Assert");
                necklace.AddRange(new List <Stone>());
            }
            catch (Exception e)
            {
                exeptionCounter++;
                Console.WriteLine($"Произошло непредвиденное исключение: {e}");
            }
            finally
            {
                Console.WriteLine($"\nПроизошло {exeptionCounter} исключительных ситуаций");
                Console.WriteLine("Программа завершает работу...");
            }
        }