throwOut<RT extends Object, CT extends Exception> static method

Safety<RT> throwOut<RT extends Object, CT extends Exception>(
  1. Danger<RT, CT> result,
  2. Error error, [
  3. Log? log,
  4. Map<String, dynamic> monitorOnError = const {},
])

RT...return type
CT...catch exception type

exception を throw out させる syntax sugar.

monitorOnErrorlog が null の時は追加されない.

Implementation

static Safety<RT> throwOut<
    RT extends Object
    ,CT extends Exception
>(
    Danger<RT,CT> result,
    Error error,
    [
        Log? log,
        Map<String, dynamic> monitorOnError = const {},
    ]
) {

    switch (result) {
        case Success(asExpected: final value):
            return Safety(value, log);
        case Failure():
            if (log != null) log.monitor(monitorOnError);
            Result.panic(error, log);
    }

}