Pełne wdzięku wyjście - Graceful exit
Wdzięczne wyjście (lub zgrabna manipulacja ) jest proste programowanie idiom którym Program wykryje poważny błąd warunku i „wyjść z wdziękiem” w kontrolowany sposób w wyniku. Często program wypisuje opisowy komunikat o błędzie do terminala lub dziennika jako część bezpiecznego wyjścia.
Zwykle kod dla łagodnego wyjścia istnieje, gdy alternatywa — pozwalająca na niewykrycie i nieobsłużenie błędu — powodowałaby fałszywe błędy lub późniejsze anomalne zachowanie, które byłoby trudniejsze do debugowania przez programistę . Kod powiązany z bezpiecznym wyjściem może również podejmować dodatkowe kroki, takie jak zamykanie plików , aby zapewnić, że program pozostawi dane w spójnym, możliwym do odzyskania stanie.
Pełne wdzięku wyjścia nie zawsze są pożądane. W wielu przypadkach bezpośrednia awaria może dać programiście możliwość dołączenia debugera lub zebrania ważnych informacji, takich jak zrzut pamięci lub zrzut stosu , w celu zdiagnozowania głównej przyczyny błędu.
W języku obsługującym formalną obsługę wyjątków bezpieczne zakończenie może być ostatnim krokiem w obsłudze wyjątku. W innych językach poprawne wyjścia mogą być zaimplementowane za pomocą dodatkowych instrukcji w miejscach możliwych błędów.
Wyrażenie „wdzięczne wyjście” zostało również uogólnione w odniesieniu do rezygnacji z pracy lub związku w życiu, które się zakończyło.
w Perlu
W języku programowania Perl wdzięczne wyjścia są zazwyczaj implementowane za pomocą operatora matrycy . Na przykład kod do otwierania pliku często wygląda tak:
# Open the file 'myresults' for writing, or die with an appropriate error message.
open RESULTS, '>', 'myresults' or die "can't write to 'myresults' file: $!";
Jeśli próba otwarcia pliku myresults
nie powiedzie się, program zawierający zakończy się komunikatem o błędzie i statusem wyjścia wskazującym na nieprawidłowe zakończenie.
W Javie
W języku programowania Java blok try...catch jest często używany do przechwytywania wyjątków . Cały potencjalnie niebezpieczny kod jest umieszczany wewnątrz bloku i, jeśli wystąpi wyjątek, zostaje zatrzymany lub przechwycony.
try {
// Try to read the file "file.txt"
Scanner sc = new Scanner(new File("file.txt"));
while (sc.hasNextLine())
System.out.println(sc.readLine());
sc.close();
} catch(IOException e) {
// The file could not be read
System.err.println("The file could not be read. Stack trace:");
e.printStackTrace();
}
W C
W C, można użyć błędu (3) funkcja zapewniana w GNU przez biblioteki GNU C .
int fd;
if ((fd = open("/dev/urandom", O_RDONLY)) < 0) error(1, errno, "Open failed");
Jeśli pierwszy parametr jest niezerowy, funkcja wyjdzie z procesu nadrzędnego i zwróci ten parametr.
Zobacz też
Bibliografia