1/* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 6package org.mockito.exceptions.base; 7 8import org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter; 9 10 11/** 12 * Raised by mockito to emit an error either due to Mockito, or due to the User. 13 * All exception classes that inherit from this class will have the stack trace filtered. 14 * Filtering removes Mockito internal stack trace elements to provide clean stack traces and improve productivity. 15 * <p> 16 * The stack trace is filtered from mockito calls if you are using {@link #getStackTrace()}. 17 * For debugging purpose though you can still access the full stacktrace using {@link #getUnfilteredStackTrace()}. 18 * However note that other calls related to the stackTrace will refer to the filter stacktrace. 19 * <p> 20 * Advanced users and framework integrators can control stack trace filtering behavior 21 * via {@link org.mockito.plugins.StackTraceCleanerProvider} classpath plugin. 22 */ 23public class MockitoException extends RuntimeException { 24 25 private static final long serialVersionUID = 1L; 26 27 private StackTraceElement[] unfilteredStackTrace; 28 29 // TODO lazy filtered stacktrace initialization 30 public MockitoException(String message, Throwable t) { 31 super(message, t); 32 filterStackTrace(); 33 } 34 35 public MockitoException(String message) { 36 super(message); 37 filterStackTrace(); 38 } 39 40 private void filterStackTrace() { 41 unfilteredStackTrace = getStackTrace(); 42 43 ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); 44 filter.filter(this); 45 } 46 47 public StackTraceElement[] getUnfilteredStackTrace() { 48 return unfilteredStackTrace; 49 } 50} 51