makotan _at_ gmail dot com

実行時のエラーを出してみる

前にテストコードで書いたこれがちょっとイマイチ・・・って気もしてて

        return when (nextNodes.size) {
            0 -> throw ToNextStatusException("zero match")
            1 -> checkNode(data , nextNodes.first().toNode)
            else -> throw ToNextStatusException("many match")
        }

0とelseの時にExceptionを出しますなんだけど、意図としてはここに来たら設定的なエラーだよ!なんだよなぁ〜


ドキュメント見てたらこんな風にかける事に気がついたので

        val nextNodes = nexts.values.filter { it.check(data) }
        return when (nextNodes.size) {
            0 -> error("zero match")
            1 -> checkNode(data , nextNodes.first().toNode)
            else -> error("many match")
        }

エラーだ!って判りやすくて良い気がする


あとこのコードもイマイチ不本意

val currentNode = flow.nodes.get(current) ?: throw ToNextStatusException("status name not found")

なんでnullならExceptionって書いてんだと。

        val currentNode = requireNotNull(flow.nodes.get(current) , {"status name not found"})

NotNullでなければいけませんって宣言の方が良いよね!
あと、文字列を渡すんじゃなくてLambdaを渡すのが良い感じ


TODOもだけど、この辺も意外と標準で揃ってて良かった。