- 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 blokutry
. Stwórz blokcatch
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ędzycatch
ifinally
? - Edytuj blok
catch
w następujący sposób:catch (Exception e)
, a wyświetlany komunikat zamień nae.Message
. - Wywołaj program dzieląc przez zero. Sprawdź co jeszcze można wywołać ze zmiennej
e
oprócz poleceniaMessage
.
- W nowym projekcie wykonaj czynności:
- Stwórz tablicę
int[] table = new int [2]
, a następnie w blokutry
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ł.
-
Stwórz nowy projekt, w bloku
try
umieśćthrow new IndexOutOfRangeException();
następnie użyj blokucatch
aby przechwycić wyjątek. Zastanów się po co możemu użyć tej konstrukcji. -
W nowym projekcie wykonaj czynności:
- Stwórz własną klasę wyjątku
NaszWyjatekException
dziedziczącą poSystem.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) { }
- wyrzuć wyjątek za pomocą konstruktora z parametrem
string
- (zaawansowane, w domu) wyrzuć wyjątek za pomocą drugiego konstruktora, podpowiedź https://msdn.microsoft.com/en-us/library/804f22sf(v=vs.110).aspx .
- 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
.
- 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?
- 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();
- 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
iint.TryParse
. - co się zmieni jeśli typ
int
zmienimy nadouble
?
- 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
naunchecked
, co się zmieniło?
-
Stwórz konsolowy kalkulator (minimalne operacje to: dodawanie, odejmowanie, mnożenie, dzielenie, pierwiastek kwadratowy). Zadbaj o właściwą obsługę wyjątków.
-
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.