【D言語】std.exception.ifThrown
std.exceptionにはifThrownという関数があります。ifThrownは、例外が投げられた時、投げられた例外に応じて任意の値を返すことができるものです。通常のtry catchよりも関数型な書き方ができます。
module main;
import std.conv : to, ConvException;
import std.exception : ifThrown, RangeError;
import std.stdio : writeln;
static assert(__VERSION__ >= 2063);
void main(string[] args) {
int num = args[1]
.to!int()
.ifThrown!ConvException(1) // 引数がintに変換できない場合
.ifThrown!RangeError(2); // 引数が渡されていない場合
num.writeln();
}
$ rdmd main.d 0
0
$ rdmd main.d a
1
$ rdmd main.d
2
なかなか便利に使えます。
担当:美馬(try catchの出番が減りそう)