Реализации исключения при делении на ноль
В этом примере мы создаем собственное исключение
Обратите внимание, что если вы пытаетесь поделить ноль на ноль, будет брошено исключение типа
В этом примере мы создаем собственное исключение
DivideByZeroException, которое наследуется от класса Exception. Затем, в блоке try мы проверяем, если делитель равен нулю, то мы бросаем это исключение с соответствующим сообщением. В блоке catch мы перехватываем исключение и выводим его сообщение об ошибке.Обратите внимание, что если вы пытаетесь поделить ноль на ноль, будет брошено исключение типа
ArithmeticException, которое уже предусмотрено в Java для обработки ситуаций деления на ноль.👍6
#Вопросы_с_собеседования
Каким будет результат выполнения следующего кода?
Объяснение: В этом коде мы вызываем метод
Этот вопрос проверяет понимание исключений, блоков
Каким будет результат выполнения следующего кода?
Объяснение: В этом коде мы вызываем метод
divide, который выполняет деление двух чисел. При делении на ноль возникает исключение ArithmeticException, которое перехватывается в блоке catch. В блоке finally всегда выполняется инструкция return 0, поэтому в итоге результатом будет значение -1.Этот вопрос проверяет понимание исключений, блоков
try-catch-finally и порядка выполнения кода в Java.👍10😢4
Может ли статический метод быть переопределён или перегружен?
Перегружен - да. Всё работает точно так же, как и с обычными методами - 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается.
Переопределён - нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода - это вполне корректная языковая конструкция.
В целом, к статическим полям и методам рекомендуется обращаться через имя класса, а не объект.
Перегружен - да. Всё работает точно так же, как и с обычными методами - 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается.
Переопределён - нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода - это вполне корректная языковая конструкция.
В целом, к статическим полям и методам рекомендуется обращаться через имя класса, а не объект.
👍9
Что будет, если скомпилировать и запустить этот код?
Anonymous Quiz
40%
Ошибка во время компиляции
18%
NullPointerException
9%
StackOverflowException
33%
Код отработает успешно
👍10
Spring Transactions
Spring Transactions - это механизм, предоставляемый Spring Framework, который позволяет управлять транзакциями в Java-приложениях. Он предоставляет абстракцию уровня транзакций, которая скрывает детали управления транзакциями в низкоуровневых API базы данных, и упрощает создание транзакционных приложений.
В коде на первом изображении мы используем аннотацию
На втором изображении представлен пример использования первого кода, мы создаем двух пользователей и пытаемся сохранить их в базе данных. Затем мы генерируем исключение
В результате выполнения данного кода, изменения в базе данных будут отменены, так как выполнявшиеся операции были выполнены в контексте транзакции, которая была отменена после генерации исключения.
Spring Transactions - это механизм, предоставляемый Spring Framework, который позволяет управлять транзакциями в Java-приложениях. Он предоставляет абстракцию уровня транзакций, которая скрывает детали управления транзакциями в низкоуровневых API базы данных, и упрощает создание транзакционных приложений.
В коде на первом изображении мы используем аннотацию
@Transactional для указания того, что метод createUser() должен выполняться в контексте транзакции. Все операции с базой данных, включая вставку новой записи, будут обернуты в транзакцию.На втором изображении представлен пример использования первого кода, мы создаем двух пользователей и пытаемся сохранить их в базе данных. Затем мы генерируем исключение
RuntimeException.В результате выполнения данного кода, изменения в базе данных будут отменены, так как выполнявшиеся операции были выполнены в контексте транзакции, которая была отменена после генерации исключения.
👍12❤3
Что такое маркерный интерфейс? Каковы известные примеры таких интерфейсов в Java?
Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие:
Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие:
☕️ Serializable используется для явного указания того, что этот класс может быть сериализован;☕️ Cloneable позволяет клонировать объекты с помощью метода clone (без интерфейса Cloneable этот метод выдает исключение CloneNotSupportedException);☕️ Remote используется в RMI для указания интерфейса, методы которого можно вызывать удаленно.👍12
#Вопросы_с_собеседования
🔔 Чем stub отличается от mock?
stub используется как заглушка сервисов, методов, классов и т.д. с заранее запрограммированным ответом на вызовы.
mock использует подмену результатов вызова, проверяет сам факт взаимодействия, протоколирует и контролирует его.
stub используется как заглушка сервисов, методов, классов и т.д. с заранее запрограммированным ответом на вызовы.
mock использует подмену результатов вызова, проверяет сам факт взаимодействия, протоколирует и контролирует его.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤1
Метод interrupt()
Метод
interrupt() используется для прерывания потока исполнения. Этот метод является частью класса Thread и позволяет прервать поток, вызывая исключение InterruptedException, если поток находится в состоянии ожидания или блокировки. Если поток не находится в таком состоянии, метод interrupt() устанавливает флаг прерывания, который можно проверить с помощью метода isInterrupted().Метод
interrupt() может применяться в различных ситуациях, например, когда необходимо остановить поток по запросу пользователя или когда поток должен завершиться по достижении определенного условия.👍12
#Вопросы_с_собеседования
🔍 Что такое race condition?
Состояние гонки (race condition) - ошибка проектирования многопоточной системы или приложения, при которой эта работа напрямую зависит от того, в каком порядке выполняются потоки. Состояние гонки возникает, когда поток, который должен исполнится в начале, проиграл гонку и первым исполняется другой поток: поведение кода изменяется, из-за чего возникают недетерменированные ошибки.Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
#вопросы_с_собеседований
Почему строка является популярным ключом в HashMap в Java?
Поскольку строки неизменяемы, их хэш код вычисляется и кэшируется в момент создания, не требуя повторного пересчета при дальнейшем использовании. Поэтому в качестве ключа HashMap они будут обрабатываться быстрее.
Почему строка является популярным ключом в HashMap в Java?
Поскольку строки неизменяемы, их хэш код вычисляется и кэшируется в момент создания, не требуя повторного пересчета при дальнейшем использовании. Поэтому в качестве ключа HashMap они будут обрабатываться быстрее.
👍23
Инструментация байт-кода Java
В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или, другим языком, внесения изменений в компилированные файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
Смотреть статью
В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или, другим языком, внесения изменений в компилированные файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
Смотреть статью
👍4
Выберите функциональный дескриптор для функционального интерфейса представленного на картинке.
Anonymous Quiz
25%
int -> String
75%
String -> int
👍15