try catch dla liczb nieujemnych (dodatnich)

0

witam, czy jest wbudowana klasa tak jak np. do dzielenia przez 0 (ArithmeticException ) która by wyłapywała próbe wprowadzenia liczby mniejszej niż 0 ?

napisałem taki program prosty:

           try
           {
                int a = int.Parse(Console.ReadLine());
                Console.WriteLine(a);
            }
            
            catch (no i tu nie moge znalesc odpowiedniej klasy :(            
             {
                             
             }
1

Istnieje wbudowana instrukcja warunkowa:

if (a < 0) {
  /* ... */
}
2

Do takich rzeczy nie stosuje się wyjątków, bo to nie jest sytuacja wyjątkowa.

0

DivideByZeroException
https://docs.microsoft.com/en-us/dotnet/api/system.dividebyzeroexception?view=netframework-4.7.2

ale jezeli mozesz to nie pozwalaj by ktos wprowadzal zero

tego exceptiona uzywa sie bardziej, jezeli masz trudne wyliczenia i podczas tych wyliczen wychodzi zero jako parametr dzielenia

0

bo w poleceniu mam żeby to zabezpieczyć za pomocą try catch a nie if else,

            try
            {
                int a = int.Parse(Console.ReadLine());

                if (a >= 0)
                {
                    Console.WriteLine(a);
                }
                else
                {
                    można tu wpisać coś aby przeniosło to catch ?, bo inaczej to nie ma sensu dawać try catch, tylko zrobić if, else i po problemie
                }

            }
            
            catch             
             {
                Console.WriteLine("Podałeś liczb ujemną");          
             }
0

przeciez dalem Ci konkretny exception ktory leci przy dzieleniu przy zero, co w nim jest nie tak?. Moze daj polecenie, bo chyba robisz cos co nie ma sensu

EDIT. ok widze ze moj post nie ma sensu.

w else po prostu rzuc exception

throw new Exception("Podałeś liczb ujemną")

najlepiej stworz swoj wlasny expcetion

0

zrobiłem tak, jak wywołać teraz ten wyjątek w catch?

 try
            {
                int a = int.Parse(Console.ReadLine());

                if (a >= 0)
                {
                    Console.WriteLine(a);
                }
                else
                {
                    throw new Exception("Podałeś liczb ujemną");
                }

            }
            catch
            {
                
            }
1

Co to w ogóle znaczy "wywołać wyjątek"? Może powinieneś jednak cokolwiek najpierw poczytać w tym zakresie, zamiast próbować na ślepo

0
        catch (Exception ex)
        {
              Console.WriteLine(ex.Message);
        }
0

oki teraz działa, dzieki juz wiem o co chodzi

 try
            {
                int a = int.Parse(Console.ReadLine());

                if (a >= 0)
                {
                    Console.WriteLine(a);
                }
                else
                {
                    throw new Exception("Podałeś liczb ujemną");
                }

            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
0

Jak użyjesz

          int.TryParse(Console.ReadLine(), out int a);
Console.WriteLine(a);

to ten try catch nie będzie Ci potrzebny.

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