- 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
.
-
Stwórz klasę
Osoba
z polemwiek
typuint
. W konstruktorze zadbaj o obsługę wyjątku, gdy parametr jest liczbą ujemną. -
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 .
-
Przerób kod z punktu 2 aby miał własną klasę wyjątku.
-
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.
- 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:
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?