export default class EtudeError extends Error { private constructor(message: string) { super(message); } public static forNull(c: { name: string }): EtudeError { return new EtudeError(`[${c.name}] Null value`); } public static forIllegalState(c: { name: string }, reason: string): EtudeError { return new EtudeError(`[${c.name}] Illegal state: ${reason}`); } public static forIllegalArgument(c: { name: string }, t: T, reason: string): EtudeError { return new EtudeError(`[${c.name}] Illegal argument: ${t} (${reason})`); } public static forInvalid(c: { name: string }, t: T, reason?: string): EtudeError { return new EtudeError(`[${c.name}] Invalid value: ${t}` + (reason == null ? "" : `(${reason})`)); } }