プロシージャまたはメソッドの戻り型として使用した場合、これはこのコードが呼び出されたときには呼び出し側に戻らないこと (つまり、
throw、
error、
exit などによって終了するだけであること) を意味します。
never-returns を返すと宣言したプロシージャには
return ステートメントを含めることはできず、常に
never-returns 型の式で終了させる必要があります。この条件に従わなければコンパイラは該当する構文エラーを生成します。
if、
switch、
type-switch のような条件式では、コンパイル時の型が
never-returns でない分岐のみに基づいて条件式のコンパイル時の型が決まります。復帰する分岐がない場合、条件式のコンパイル時の型は
never-returns になります。たとえば、次の例では
not-odd-error を
never-returns として宣言することにより、これを
else 句で使用し、
if 句が値を生成することを妨げずに済むことができます。
常にエラーや例外をスローすることになっている関数や、呼び出し側に制御を戻さない関数は、never-returns を戻り型として宣言する必要があります。
never-returns 型は、変数、フィールド、パラメータの型宣言には使えません。