Skip to content

Instantly share code, notes, and snippets.

@pjastr
Last active December 4, 2017 09:49
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/24a6861ea7faad3d3cda49e8165da0ec to your computer and use it in GitHub Desktop.
Save pjastr/24a6861ea7faad3d3cda49e8165da0ec 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. W nowym projekcie wykonaj czynności:
  • Stwórz tablicę int[] table = new int [2], a następnie w bloku try umieść kod: table[25] = 2.
  • Stwórz 2 bloki catch: catch(IndexOutOfRangeException e), catch(). W obu umieść różne komunikaty.
  • Uruchom program, zwróć uwagę który kod się wywołał.
  1. Stwórz nowy projekt, w bloku try umieść throw new IndexOutOfRangeException(); następnie użyj bloku catch aby przechwycić wyjątek. Zastanów się po co możemu użyć tej konstrukcji.

  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. 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();

Przechwyć wyjątki za pomocą bloku try... catch.

  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 (potem obsłuż wyjątki):
            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?
  1. Stwórz konsolowy kalkulator (minimalne operacje to: dodawanie, odejmowanie, mnożenie, dzielenie, pierwiastek kwadratowy). Zadbaj o właściwą obsługę wyjątków.

  2. Stwórz klasę Osoba z polami imię i nrPesel. Następnie zaplanuj program z obsługą wyjątków, który będzie od użytkownika pobierał imię i numer PESEL, a jako wyjątek wyrzucał informację kiedy PESEL nie jest poprawny. O zasadach PESEL możesz poczytaj tu https://pl.wikipedia.org/wiki/PESEL Jeśli potrzebujesz generatora numerów PESEL, wyszukaj go w sieci.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment