例外処理

C++の例外を使っていて気になったのだが、C++には「この関数が例外を吐くかどうか」を知るための記述がない。
Javaだと

void hoge() throws NullPointerException

こんな感じに吐く例外を定義しているし、そういう関数はtyr/catchで囲まないとコンパイル段階で弾かれる。
何故C++には記述がないのだろうか?
 
コンパイラを作る上で例外を多様しているが、上のことを考えてみると怖くて仕方が無い。
私だけで作ってるからいいものの、他人のライブラリとか使う場合はどうするのだろうか。
ドキュメントが常に正しいとは限らないのに。
 
ところでここまで書いてぐぐってみたのだが、throwsに相当するのは一応あるそうだ
だがJavaと違って強制ではないので恐怖が取り除かれることはなかった。
 
今のところ独自言語に例外機構を入れるつもりはないが、将来的に実装する場合Javaを見習うことにしよう。