Почему я могу «подделать» трассировку стека исключения в Java?

Если я запускаю следующий тест, он не проходит:

public class CrazyExceptions {
    private Exception exception;

    @Before
    public void setUp(){
        exception = new Exception();
    }

    @Test
    public void stackTraceMentionsTheLocationWhereTheExceptionWasThrown(){
        String thisMethod = new Exception().getStackTrace()[0].getMethodName();
        try {
            throw exception;
        }
        catch(Exception e) {
            assertEquals(thisMethod, e.getStackTrace()[0].getMethodName());
        }
    }
}

Со следующей ошибкой:

Expected :stackTraceMentionsTheLocationWhereTheExceptionWasThrown
Actual   :setUp

Трассировка стека просто лежала.

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

Ответы на вопрос(6)

Ваш ответ на вопрос