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

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

RT...return type
ET...exception type
BET...base exception type

exception を throw out させる syntax sugar.
return type が Success で固定の場合などの時に利用することがある.

Implementation

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

    switch (danger) {
        case Success():
            return Success(danger.wrapped, log);
        case Failure():
            if (log != null) {
                log.monitor(monitorOnError);
                log.monitor({'exception': danger.wrapped});
            };
            Result.panic(error, log);
    }

}