TOPPERS/JSPのヘッダーファイルなどに throw()
の記述が多用されています。
この記述は『無例外保証(no-throw guarantee)』と呼ばれる「例外は投げません」という意味です。
(例) kernel.h
1 2 3 4 5 6 7 |
extern ER act_tsk(ID tskid) throw(); extern ER iact_tsk(ID tskid) throw(); extern ER_UINT can_act(ID tskid) throw(); extern void ext_tsk(void) throw(); extern ER ter_tsk(ID tskid) throw(); extern ER chg_pri(ID tskid, PRI tskpri) throw(); extern ER get_pri(ID tskid, PRI *p_tskpri) throw(); |
TOPPERS/JSPの付属ドキュメント "doc/c++.txt"
3.5 サービスコールの例外指定
TOPPERS/JSPカーネルが提供する全サービスコールは例外をスローすることがないため、例外指定throw()が付加される。これにより、例外処理のためのテーブルが生成されることを最小限に抑えられる場合があり、主として空間効率の向上が期待できる。
下記のように記述すると「int型 または double型 の例外を送出する」という意味になります。
1 |
void f() throw( int, double ); |
() の中身が空なので、「例外は送出しません」という意味(コンパイラ最適化)となります。