Skip to content

Instantly share code, notes, and snippets.

@pjastr
Last active December 9, 2017 19:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pjastr/d4a0035c8b58f0d064e3072b888d5d21 to your computer and use it in GitHub Desktop.
Save pjastr/d4a0035c8b58f0d064e3072b888d5d21 to your computer and use it in GitHub Desktop.
  1. W nowym projekcie wykonaj następujące czynności:
  • w metodzie Main wklej poniższy kod
int liczba1;
liczba1=30 / 0;

Jaki błąd wyświetlił kompilator?

  • zastąp kod w Main następująco:
int liczba1=30;
int liczba2 = 0;
int liczba3 = liczba1 / liczba2;

czy możesz skompilować program? co się stanie po uruchomieniu programu?

  • Operacje na zmiennych (np. liczba3 = liczba1 / liczba1) umieść w bloku try. Stwórz blok catch i dodaj tam instrukcję wyświetlającą komunikat np."Nie lubię dzielić przez zero".
  • Stwórz blok finally i umieść w nim komunikat "FINALLY".
  • Uruchom program dwukrotnie, modyfikując liczba2 na liczbę inną niż 0. Widzisz różnicę między catch i finally?
  • Edytuj blok catch w następujący sposób: catch (Exception e), a wyświetlany komunikat zamień na e.Message.
  • Wywołaj program dzieląc przez zero. Sprawdź co jeszcze można wywołać ze zmiennej e oprócz polecenia Message.
  1. Stwórz klasę Osoba z polem wiek typu int. W konstruktorze zadbaj o obsługę wyjątku, gdy parametr jest liczbą ujemną.

  2. W nowym projekcie wykonaj czynności:

  • Stwórz własną klasę wyjątku NaszWyjatekException dziedziczącą po System.Exception
  • stwórz w tej klasie konstruktor domyślny
  • stwórz w tej klasie konstruktory parametryczne:
public NaszWyjatekException(string message) : base(message) { }

oraz:

public NaszWyjatekException(String message, Exception innerException)
 : base(message, innerException) { }
  1. Przerób kod z punktu 2 aby miał własną klasę wyjątku.

  2. W Main umieść kod:

            object o1 = null;
            object o2 = new object();

            Console.WriteLine(ReferenceEquals(o1, o1)); 
            Console.WriteLine(ReferenceEquals(o1, o2)); 
            Console.WriteLine(ReferenceEquals(o2, o1)); 
            Console.WriteLine(ReferenceEquals(o2, o2)); 

            Console.WriteLine(o1.Equals(o1)); 
            Console.WriteLine(o1.Equals(o2)); 
            Console.WriteLine(o2.Equals(o1)); 
            Console.WriteLine(o2.Equals(o2));

            Console.WriteLine(o1 == o1);
            Console.WriteLine(o1 == o2);
            Console.WriteLine(o2 == o1);
            Console.WriteLine(o2 == o2);

            Console.ReadKey();

Przeanalizuj go pod kątem wyrzucania wyjątków.

  1. W Main skopiuj poniższy kod:
int liczba1=30;
int liczba2 = 0;
int liczba3 = liczba1 / liczba2;

W pierwszym polecniu program po skompilowaniu wyrzucił wyjątek. Co się stanie jeśli byśmy użyli innego typu liczbowego?

  1. Skopiuj do Main i przeanalizuj jakie wyjątki są wyrzucane:
            string stringLiczba = "245232";
            string stringPusty = null;
            string blednyFormat = "5.287";
            string pozaZakres = "9876225432123456";
            int liczba;
            
            liczba = int.Parse(stringLiczba); 
            liczba = int.Parse(stringPusty); 
            liczba = int.Parse(blednyFormat); 
            liczba = int.Parse(pozaZakres); 

            liczba = Convert.ToInt32(stringLiczba); 
            liczba = Convert.ToInt32(stringPusty); 
            liczba = Convert.ToInt32(blednyFormat); 
            liczba = Convert.ToInt32(pozaZakres); 

            bool wynik;
            wynik = int.TryParse(stringLiczba, out liczba); 
            wynik = int.TryParse(stringPusty, out liczba); 
            wynik = int.TryParse(blednyFormat, out liczba); 
            wynik = int.TryParse(pozaZakres, out liczba); 
                   
            Console.ReadKey();
  1. Napisz program proszący użytkownika o podanie liczby całkowitej. Pobraną wartość zapisz w zmiennej typu int. Jeśli wartość jest poprawna, to wyświetl ją na konsoli. Jeśli nie, wyświetl komunikat błędu.
  • przetestuj metody Convert.ToInt32, int.Parse i int.TryParse.
  • co się zmieni jeśli typ int zmienimy na double?
  1. W Main umieść kod:
                int a = int.MaxValue;
                Console.WriteLine(a);               
                try
                {
                    Console.WriteLine(++a);
                }
                catch (OverflowException e)
                {
                    Console.WriteLine(e.Message);   
                }
                Console.ReadKey();

Co pojawia się na konsoli?

  • umieść ten kod w bloku checked { }, co się zmieniło?
  • zmień słowo checked na unchecked, co się zmieniło?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment