#%D0%B8%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F

2025-04-07

Как бросить исключение без throws в Java: технический разбор с примерами

В Java существует старое, но всё ещё актуальное ограничение: если метод бросает checked-исключение (например, IOException), он обязан явно объявить это с помощью throws. Это требование — не от JVM, а от компилятора. Компилятор жёстко следит за декларациями, но вот JVM — нет. Что создаёт любопытную лазейку: обойти компилятор, оставаясь при этом в рамках спецификации JVM . Сегодня разберёмся, как это сделать с помощью Unsafe.throwException() , почему это вообще работает, где это может пригодиться, и на что стоит обратить внимание при использовании Java 17, 21 и 24.

habr.com/ru/companies/otus/art

#java #throws #исключения #компилятор

2025-03-02

[Перевод] 3200% нагрузки на процессор

Совсем недавно моя машина была в таком запущенном состоянии, что я едва мог подключиться к ней через ssh. 3200% нагрузки на CPU — полностью использовались все 32 ядра хоста! Сравните это с моим последним багом, когда использовалось всего одно ядро, то есть 100% К счастью, я использовал среду выполнения Java 17, у которой были дампы потоков с указанием времени CPU!

habr.com/ru/articles/887040/

#nullpointerexception #многопоточность #concurrency #исключения #баги

2025-01-23

Почему мы отказались от выражения «assert» в Python

В текущем проекте на Python мы практически полностью отказались от использования выражений с ключевым словом assert , и в этой статье я расскажу почему. Рассмотрим кейсы где использование выражений assert уместно, а где оно может выстрелить в ногу, и как этого избежать.

habr.com/ru/articles/876170/

#python #assert #exception #исключения #pytest #pydantic #линтер #интерпретатор #баги #ошибки

2024-10-25

[Перевод] Полное руководство по обработке ошибок в Python

Я часто сталкиваюсь с разработчиками, очень хорошо знающими механику обработки ошибок в Python, однако когда я начинаю выполнять ревью их кода, он оказывается далеко неидеальным. Исключения в Python — это одна из тех областей, поверхностный уровень которого знает большинство, но многие разработчики даже не догадываются о существовании более глубокого, почти тайного уровня. Если вы хотите протестировать себя по этой теме, то проверьте, сможете ли вы ответить на следующие вопросы: Когда следует перехватывать исключения, генерируемые вызываемыми вами функциями, а когда этого делать не нужно? Как узнать, какие классы исключений нужно перехватывать? Что нужно делать при перехвате исключений для их «обработки»? Почему перехватывание всех исключений считается порочной практикой, и когда делать это приемлемо? Вы готовы узнать секреты обработки ошибок в Python? Тогда поехали!

habr.com/ru/articles/853056/

#обработка_ошибок #исключения #перехват_ошибок #exceptions #error_handling

2024-09-16

[Перевод] Почему я предпочитаю исключения, а не значения ошибок

Качественная обработка ошибок — это ключ к созданию надёжных программ; но программистов она часто пугает, ведь всегда найдётся ещё один пограничный случай. В традиционных объектно-ориентированных языках программирования используются специальные классы исключений, которые можно выбрасывать, чтобы прекратить обычный поток управления и немедленно сообщить об ошибке. Давайте рассмотрим пример, в котором применено защищённое от ошибок целочисленное деление: int safeDiv(int a, int b) {
if (b == 0)
throw Div0(); // Исключения передаются особым образом
return a / b; // Теперь-то всё абсолютно безопасно, ведь так?
} Новые языки программирования склонны применять сообщения об ошибках в функциональном стиле и кодировать ошибки в возвращаемый тип. Например, Go кодирует ошибку в возвращаемый тип при помощи кортежа (res, err) , а Rust возвращает Result<T, E> — тип-сумму результата и ошибки.

habr.com/ru/companies/ruvds/ar

#ruvds_переводы #исключения #отладка #ошибки_в_программе #сообщения_об_ошибках #коды_ошибок #exception

2024-07-10

Основы работы с файлами и потоками в C#

Работа с файлами — неотъемлемая часть многих проектов. Простая запись логов, чтение конфигурационных файлов или обработка больших данных - все это является частью взаимодействовия с файловой системой. В этой статье мы рассмотрим основы работы с файлами и потоками в C#.

habr.com/ru/companies/otus/art

#c# #программирование #потоки_данных #исключения #работа_с_файлами

2024-06-18

Работа с новой архитектурой в Laravel 11

Основная "киллер-фича" фреймворка Laravel версии 11 - "плоский код". Под капот убрано всё, что большинством разработчиков не используется и, по сути, является "мусором". А также убраны некоторые действительно полезные вещи. Под катом мы рассмотрим что куда делось и как улучшить взаимодействие с новой архитектурой.

habr.com/ru/articles/822185/

#laravel #middleware #exceptions #исключения #php #маршрутизация #маршруты #урл #cron #вебприложение

2024-02-16

[Перевод] Xv6: учебная Unix-подобная ОС. Глава 4: Прерывания и системные вызовы

Глава расскажет, как xv6 обрабатывает прерывания на RISC-V и о хитростях виртуальной памяти: как использовать ошибки доступа к страницам, чтобы оптимизировать работу ОС. Глава расскажет о копировании страниц при записи, ленивой выдаче страниц, выдаче страниц по необходимости и сбросе страниц на диск.

habr.com/ru/articles/794326/

#xv6 #операционная_система #прерывания #исключения #системные_вызовы #ядро #таблицы_страниц #виртуальная_память #copyonwrite #riscv

2023-12-13

Тайны пингвина: как работают исключения и прерывания в Linux?

Привет, хабр! Моя прошлая статья о работе памяти в Linux вам понравилась. Сегодня мы разберем работу исключений и прерываний. Что это, как они работают в ОС и Linux? Давайте разберемся вместе!

habr.com/ru/companies/timeweb/

#timeweb_статьи #linux #unix #операционные_системы #системное_программирование #низкоуровневое_программирование #прерывания #исключения #ядро_linux

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst