Грациозный выход [1] (или изящная обработка ) — это простая идиома программирования [ нужна цитация ] , при которой программа обнаруживает серьезную ошибку и в результате «корректно завершает работу» контролируемым образом. Часто программа выводит на терминал или в журнал описательное сообщение об ошибке как часть корректного выхода.
Обычно код для плавного выхода существует, когда альтернатива — позволить ошибке остаться незамеченной и необработанной — может привести к ложным ошибкам или последующему аномальному поведению, которое программисту будет сложнее отладить . Код, связанный с плавным выходом, также может выполнять дополнительные действия, такие как закрытие файлов , чтобы гарантировать, что программа оставляет данные в согласованном и восстанавливаемом состоянии.
Изящные выходы не всегда желательны. Во многих случаях прямой сбой может дать разработчику программного обеспечения возможность подключить отладчик или собрать важную информацию, например дамп ядра или трассировку стека , для диагностики основной причины ошибки.
В языке, поддерживающем формальную обработку исключений , плавный выход может быть последним шагом в обработке исключения. В других языках плавный выход может быть реализован с помощью дополнительных операторов в местах возможных ошибок.
Фраза «изящный уход» также была обобщена и обозначала отказ от работы или отношений в жизни, которые закончились. [2] [3]
В языке программирования Perl плавный выход обычно реализуется с помощью оператора die . Например, код открытия файла часто выглядит следующим образом:
# Откройте файл myresults для записи или умрете с соответствующим сообщением об ошибке. откройте RESULTS , '>' , 'myresults' или умрите «невозможно записать в файл 'myresults': $!» ;
Если попытка открыть файл myresults
не удалась, содержащая его программа завершится с сообщением об ошибке и статусом выхода , указывающим на ненормальное завершение.
В языке программирования Java блок try...catch часто используется для перехвата исключений . Весь потенциально опасный код помещается внутри блока и в случае возникновения исключения останавливается или перехватывается.
try { // Пытаемся прочитать файл "file.txt" Scanner sc = new Scanner ( new File ( "file.txt" )); while ( sc . hasNextLine ()) System . вне . println ( sc . readLine ()); СК . закрывать (); } catch ( IOException e ) { // Не удалось прочитать файл System . ошибаюсь . println ( "Файл не может быть прочитан. Трассировка стека:" ); е . печатьStackTrace (); }
В C можно использовать функцию error(3) , предоставляемую в GNU библиотекой GNU C.
интервал ФД ; if (( fd = open ( "/dev/urandom" , O_RDONLY )) < 0 ) ошибка ( 1 , errno , "Ошибка открытия" );
Если первый параметр не равен нулю, эта функция выйдет из родительского процесса и вернет этот параметр.
Есть хитрость в «изящном выходе».
Все начинается с осознания того, что работа, жизненный этап или отношения закончились, и отпустить их.
Это означает оставить то, что закончилось, не отрицая его значимости или его прошлой важности для нашей жизни.
Оно предполагает чувство будущего, веру в то, что каждая линия выхода — это вход, что мы движемся вверх, а не наружу.
Грамотный уход может улучшить репутацию сотрудника и укрепить ценные отношения.
Плохой может нанести серьезный ущерб обоим.