Как получить объект-источник Exception - PullRequest
5 голосов
/ 29 мая 2011

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

Я знаю, что если вы сделаете свои собственные исключения, вы можете изменить конструктор и получить ссылку на объект:

public class MyEx extends Throwable {
    private MyObject object;

    public MyEx(MyObject o){
        super();
    }

    public MyObject getSource(){
        return object;
    }
}

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

Ответы [ 2 ]

4 голосов
/ 29 мая 2011

Если вы просто хотите увидеть, из какой части кода выдается исключение, у вас есть простая трассировка стека.Вы получаете это, вызывая printStackTrace() для экземпляра исключения.

Это, однако, не дает точного экземпляра объекта, который вызвал исключение.Для этого вы должны реализовать пользовательское исключение, как вы указали.Обратите внимание, что в некоторых контекстах нет такой вещи как экземпляр, как, например, исключение, выброшенное из статического метода.

3 голосов
/ 29 мая 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...