sourceafButter::ButterErr.fan


** As thrown by 'Butter'.
const class ButterErr : Err {
    const Str[]? availableValues

    new make(Str msg := "", Err? cause := null) : super(msg, cause) {}

    new makeFromValues(Str msg, Obj?[] availableValues, Err? cause := null) : super.make(msg, cause) {
        this.availableValues = availableValues.exclude { it == null }.map { it.toStr }
    }

    override Str toStr() {
        if (availableValues?.isEmpty ?: true)
            return super.toStr
        buf := StrBuf()
        buf.add("${typeof.qname}: ${msg}\n")
        buf.add("\nAvailable values:\n")
        availableValues.each { buf.add("  $it\n")}
        buf.add("\nStack Trace:")
        return buf.toStr
    }
}