throw
読み:スロウ
外語:throw
C++/Java/Kotlinの予約語の一つ。例外を送出する。
概要
言語により仕様にかなり差が見られるが、いずれにせよ例外を送出し、catchに捕獲されるように機能する。
throw-catchがなくても、フラグ等を返しif文などで制御する方法でも同様のことは可能だが、if文はそれ以外の条件が混入することがあり視認性に難があるのに対して、throw-catch構文の場合、catch内の処理は常にthrowに対する処理であり視認性に優れる、などの利点がある。
特徴
C++
C++の場合、原則としてtry-catch構文の中でthrowを用いる。また、関数内でスローされた例外が関数内で処理されず、呼び出し元に返されることもある。
C++の場合は、int型やconst char*型など特定の型でスローすることができ、catchブロックはその型を指定して受け取ることになる。また型を指定せず、「throw;」のようにして例外をスローすることもでき、この場合は標準の例外クラス std::bad_exception がスローされる。std::bad_exceptionは、catch (std::bad_exception e) { ... } のようにして受け取って処理をする。
Java
Javaでは、Exceptionクラスから派生した例外クラスを初期化した上でthrow命令に渡すことで、例外を送出することができる。
多くの場合、throw new NullPointerException(); のように、throw new 例外クラス として用いる。
再検索