Telegram Group & Telegram Channel
Про обработку исключений в работе программы

Я на протяжении всей жизни встречаю повальное непонимание природы исключений и важности работы с ними 😑

Давайте разберемся!

Программа: это алгоритм, который работает с данными. Все, только алгоритм и данные (дада, посты в соцсети, видосы, показатели с периферийных устройств, кнопки, которые ты нажал в игре и урон с ульты в доте — это все данные).

Алгоритм: это заранее предопределенная последовательность действий над данными, которые программа получила на вход. Ну и конечно дальше програмама выводит эти данные: на экран, сохраняет в бд, передает на физическую перефирию, которая приводит в движение автомобиль и так далее

Исключения: это событие, когда мы в программе получили данные, не учтенные алгоритмом, что приводит к невозможности дальнейшего его исполнения (по умолчанию это приводит к остановке работы всей системы или локализуется в рамках одного потока обработки вызова)

То есть — наш алгоритм получил такие данные, на которые он не был рассчитан. Поэтому выбрасывается ошибка, которую нужно обработать (например, получили ошибку в ответе от сервера, пользователь загрузил кривые данные, которые не были проверены, нет сети и запрос не ушел, протухла сессия, не нашелся файл и так далее). Все одно — на вход пришли кривые данные, на которые программа не была расчитана

Но исключения происходят не только из-за внешних факторов. Никто не отменял кривые руки, когда программа ломается из-за кривого алгоритма, принимая «сломанное» состояние самостоятельно. Классика — когда напутали с типами (реальный кейс). Во всех случаях программа держала в переменной объект. Но при одном кейсе (когда ты заходил в редактирование) и успешно редактировал обьект, он клался в память как массив объектов. Ломая все поведение программы до перезагрузки страницы (дада, те самые type any).

Другими словами: любое исключение, есть недостаток нашей программы. И мы обязаны обрабатывать исключения: либо нормализуя данные для продолжения работы алгоритма, либо — отказываясь от исполнения, отбрасывать ошибку потребителю (под страхом смерти нельзя ломаться молча, оставляя потребителя в неведнии).

Плюс, обязательно, логировать события в аналитические системы (журналирование, аудит, мониторинг, обзервабилити платформа). Их необходимо учесть, сделать доступными для анализа, подсчета и построения графиков. Для того, чтобы итеративно разбирая негативные кейсы увеличивать устойчивость и качество работы нашей программы

Так вот, этого понимания повально не хватает разработчикам. Недавно я потратил неадекватно много времени и сил, чтобы донести эту мысль, и, кажется, об этом пора делать доклад

А как вы работаете с исключениями, почему?
1👍3911😱2



group-telegram.com/tired_glebmikheev/2104
Create:
Last Update:

Про обработку исключений в работе программы

Я на протяжении всей жизни встречаю повальное непонимание природы исключений и важности работы с ними 😑

Давайте разберемся!

Программа: это алгоритм, который работает с данными. Все, только алгоритм и данные (дада, посты в соцсети, видосы, показатели с периферийных устройств, кнопки, которые ты нажал в игре и урон с ульты в доте — это все данные).

Алгоритм: это заранее предопределенная последовательность действий над данными, которые программа получила на вход. Ну и конечно дальше програмама выводит эти данные: на экран, сохраняет в бд, передает на физическую перефирию, которая приводит в движение автомобиль и так далее

Исключения: это событие, когда мы в программе получили данные, не учтенные алгоритмом, что приводит к невозможности дальнейшего его исполнения (по умолчанию это приводит к остановке работы всей системы или локализуется в рамках одного потока обработки вызова)

То есть — наш алгоритм получил такие данные, на которые он не был рассчитан. Поэтому выбрасывается ошибка, которую нужно обработать (например, получили ошибку в ответе от сервера, пользователь загрузил кривые данные, которые не были проверены, нет сети и запрос не ушел, протухла сессия, не нашелся файл и так далее). Все одно — на вход пришли кривые данные, на которые программа не была расчитана

Но исключения происходят не только из-за внешних факторов. Никто не отменял кривые руки, когда программа ломается из-за кривого алгоритма, принимая «сломанное» состояние самостоятельно. Классика — когда напутали с типами (реальный кейс). Во всех случаях программа держала в переменной объект. Но при одном кейсе (когда ты заходил в редактирование) и успешно редактировал обьект, он клался в память как массив объектов. Ломая все поведение программы до перезагрузки страницы (дада, те самые type any).

Другими словами: любое исключение, есть недостаток нашей программы. И мы обязаны обрабатывать исключения: либо нормализуя данные для продолжения работы алгоритма, либо — отказываясь от исполнения, отбрасывать ошибку потребителю (под страхом смерти нельзя ломаться молча, оставляя потребителя в неведнии).

Плюс, обязательно, логировать события в аналитические системы (журналирование, аудит, мониторинг, обзервабилити платформа). Их необходимо учесть, сделать доступными для анализа, подсчета и построения графиков. Для того, чтобы итеративно разбирая негативные кейсы увеличивать устойчивость и качество работы нашей программы

Так вот, этого понимания повально не хватает разработчикам. Недавно я потратил неадекватно много времени и сил, чтобы донести эту мысль, и, кажется, об этом пора делать доклад

А как вы работаете с исключениями, почему?

BY Уставший техдир




Share with your friend now:
group-telegram.com/tired_glebmikheev/2104

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

It is unclear who runs the account, although Russia's official Ministry of Foreign Affairs Twitter account promoted the Telegram channel on Saturday and claimed it was operated by "a group of experts & journalists." I want a secure messaging app, should I use Telegram? Either way, Durov says that he withdrew his resignation but that he was ousted from his company anyway. Subsequently, control of the company was reportedly handed to oligarchs Alisher Usmanov and Igor Sechin, both allegedly close associates of Russian leader Vladimir Putin. As such, the SC would like to remind investors to always exercise caution when evaluating investment opportunities, especially those promising unrealistically high returns with little or no risk. Investors should also never deposit money into someone’s personal bank account if instructed. The account, "War on Fakes," was created on February 24, the same day Russian President Vladimir Putin announced a "special military operation" and troops began invading Ukraine. The page is rife with disinformation, according to The Atlantic Council's Digital Forensic Research Lab, which studies digital extremism and published a report examining the channel.
from ms


Telegram Уставший техдир
FROM American