Niestety budowanie aplikacji obejmuje kodowanie. Niezależnie od tego, jak ostrożnie piszesz / debugujesz swój program, nie będzie można wyobrazić sobie każdej sytuacji, która może się nie udać. Niedoświadczony użytkownik może na przykład spróbować otworzyć nieistniejący plik lub wprowadzić złą wartość w polu danych.
Użytkownicy popełniają błędy i powinniśmy być przygotowani do obsługi / zapobiegania tym błędom, gdziekolwiek i kiedykolwiek jest to możliwe.
Błędy, wyjątki?
Wyjątkiem jest na ogół warunek błędu lub inne zdarzenie, które zakłóca normalny przepływ wykonywania w aplikacji. Ilekroć błąd wynika z przetwarzania wiersza kodu, Delphi tworzy (podnosi) obiekt potomny z TObject zwany obiektem wyjątku.
Strzeżone bloki
Aplikacja reaguje na wyjątek, wykonując jakiś kod zakończenia, obsługując wyjątek, lub jedno i drugie. Sposób włączenia pułapek błędów / wyjątków w ramach danego kodu, wyjątek musi wystąpić w obrębie strzeżonego bloku instrukcji. Ogólny kod wygląda następująco:
próbować. {strzeżony blok kodu} z wyjątkiem. na początek. {wyjątek blokuje uchwyty SomeException} koniec; koniec;
ZA spróbuj / z wyjątkiem instrukcja wykonuje instrukcje w strzeżonym bloku kodu. Jeśli instrukcje są wykonywane bez zgłaszania wyjątków, blok wyjątków jest ignorowany, a kontrola jest przekazywana do instrukcji następującej po słowie kluczowym end.
Przykład:
... Zero: = 0; próbować. manekin: = 10 / zero; z wyjątkiem. na EZeroDivide do. MessageDlg („Nie można podzielić przez zero!”, MtError, [mbOK], 0); koniec;...
Ochrona zasobów
Gdy sekcja kodu nabywa zasób, często konieczne jest upewnienie się, że zasób został ponownie zwolniony (w przeciwnym razie możesz go uzyskać wyciek pamięci), niezależnie od tego, czy kod kończy się normalnie, czy jest przerwany przez wyjątek. W tym przypadku używana jest składnia Wreszcie słowo kluczowe i wygląda następująco:
{jakiś kod do alokacji zasobów} próbować. {strzeżony blok kodu} Wreszcie. {termination blok - kod do wolnych zasobów} koniec;
Przykład:
... AboutBox: = TAboutBox. Utwórz (zero); próbować. AboutBox. ShowModal; Wreszcie. AboutBox. Wydanie; koniec;...
Podanie. OnException
Jeśli twoja aplikacja nie obsługuje błędu, który spowodował wyjątek, Delphi użyje domyślnego modułu obsługi wyjątków - po prostu wyświetli okno komunikatu. Możesz rozważyć napisanie kodu w zdarzeniu OnException dla obiektu TApplication, aby wychwycić błędy na poziomie aplikacji.
Przełam wyjątki
Podczas budowania programu z obsługą wyjątków możesz nie chcieć, aby Delphi łamał wyjątki. Jest to świetna funkcja, jeśli chcesz, aby Delphi pokazywał, gdzie wystąpił wyjątek; może to jednak być denerwujące, gdy testujesz własną obsługę wyjątków.
Kilka ostatnich słów
Celem tego artykułu jest krótkie spojrzenie na wyjątki. W celu dalszej dyskusji na temat obsługi wyjątków, rozważ O obsłudze wyjątków w obsłudze wyjątków Delphi, za pomocą narzędzia takiego jak Obsługa awarii / wyjątków Delphi z raportowaniem błędów oraz niektóre z następujących powiązanych artykułów: