#java #exception #exception-handling
#java #исключение
Вопрос:
Я работал над назначением в Java, и мне стало интересно, возможно ли узнать, какой объект вызвал исключение.
Я знаю, что если вы создаете свои пользовательские исключения, вы можете изменить конструктор и получить ссылку на объект:
public class MyEx extends Throwable {
private MyObject object;
public MyEx(MyObject o){
super();
}
public MyObject getSource(){
return object;
}
}
но я не знаю, существует ли другой способ отследить, кто выдал исключение. Вы знаете какой-либо другой способ?
Ответ №1:
Если вы просто хотите увидеть, из какой части кода генерируется исключение, у вас есть простая трассировка стека. Вы получаете это, вызывая printStackTrace()
экземпляр исключения.
Однако это не дает вам точного экземпляра объекта, который вызвал исключение. Для этого вы должны реализовать пользовательское исключение, как вы указали. Обратите внимание, что в некоторых контекстах не существует такого понятия, как экземпляр, например, исключение, генерируемое из статического метода.
Комментарии:
1. Вы также можете использовать exception.getStackTrace(), если хотите сделать больше с трассировкой стека.