Custom Expcetion- nie działa

0

Dzień dobry, zrobiłem sobie console app. Gdzie wyodrębniłem osobno obiekty i CustomException.
screenshot-20211012164041.png

MAIN()

using System;
using Math;

namespace Math
{
    public class Program
    {
        static void Main(string[] args)
        {
            double nowa = Convert.ToDouble(Console.ReadLine());
            double secnowa = Convert.ToDouble(Console.ReadLine());
            Math m = new Math();
            nowa = m.Divide(nowa, secnowa);
            try
            {
                m.Divide(nowa,secnowa);
            }
            catch (MathException ex)
            {
                Console.WriteLine("Tutaj jest MathException: {0}", ex.Message);
            }
            Console.WriteLine(nowa);
        }
    }
}

Math.cs

using System;

namespace Math
{
    public class Math
    {
        public int SUM(int a, int b)
        {
            int sum = (a + b);
            return sum;
        }
        public int Multiply(int a, int b)
        {
            int multiply = a - b;
            return multiply;
        }
        double divide = 0;
        public double Divide(double a, double b)
        {   
            divide = (a / b);
            if (divide <= 0)
                throw (new MathException("Nie dziel przez 0"));
            else
                Console.WriteLine("Wynik: {0}", divide);
            return divide;
             
        }
        public int Subtrack(int a, int b)
        {
            int subtrack = (a - b);
            return subtrack;
        }
    }
}

MathException.cs

using System;

namespace Math
{
    public class MathException : Exception
    {
        public MathException()
        {
        }
        public MathException (string message) : base (message)
        { 
        }
    }
}

Niestety przy dzieleniu przez zero, nie działa mi try i catch. Nie wiem dlaczego.

4

Naucz się korzystać z debuggera, bo to naprawdę pomaga przy szukaniu blędów.

Coś pomieszałeś w metodzie Divide. Powinno być tak:

        public double Divide(double a, double b)
        {
            if (b == 0)
                throw new MathException("Nie dziel przez 0");

            var divide = a / b;
            return divide;
        }
0

@maszrum: screenshot-20211013123912.png

Jednak jest jeszcze jeden problem. Program się wywala.

3

Znaczy co się wywala?
Rzuciłeś wyjątkiem to debugger to pokazał (możesz w opcjach to wyłączyć).

Jak przejdziesz dalej to zobaczysz, że wyjątek ten zostanie złapany w Mainie i wykona się akcja zdefiniowana w catchu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1