package tc.oc.commons.core.exception;
import java.lang.reflect.Member;
import javax.annotation.Nullable;
import tc.oc.commons.core.reflect.ReflectionFormatting;
/**
* Exception indicating that a {@link Member} definition does not meet some requirement
*/
public class InvalidMemberException extends Error {
private final Member member;
public InvalidMemberException(Member member, @Nullable String message, @Nullable Throwable cause) {
super(message, cause);
this.member = member;
}
public InvalidMemberException(Member member, @Nullable Throwable cause) {
this(member, null, cause);
}
public InvalidMemberException(Member member, @Nullable String message) {
this(member, message, null);
}
public InvalidMemberException(Member member) {
this(member, null, null);
}
public Member getMember() {
return member;
}
public String getMemberDescription() {
return ReflectionFormatting.multilineDescription(member);
}
@Override
public String toString() {
return super.toString() + "\n in " + getMemberDescription();
}
}