編集:この本には何の問題もありません。提供されているコードを正しくコピーできなかっただけです。ブロックは、私がブロックのtry-catch
外側に置いている間、whileループの内側にあるはずです。
Stroutrupの「プログラミング:C ++を使用した原則と実践」の第7章のセクション7(「エラーからの回復」)について、私が見逃しているかもしれないことがあります。この本を読んだ人が私を助けてくれることを願っています(または実際には誰でも!)。
トークンパーサーを備えた計算機を開発しました。プログラムが無効なトークンを読み取ると、プログラムは終了します。セクション7の目的は、電卓を終了せずにそのようなエラーから回復させることです。私の問題は、本の指示に従った後でも、無効なトークンの後で電卓が終了することです。
これが電卓の完全なコードです。コードを理解するために必要な場合に備えて、std_lib_facilities.hを次に示します。
ご覧のとおり、をmain()
呼び出します。これは、例外がスローされた場合(無効なトークンが読み取られた場合に発生します)をcalculate()
呼び出します。次に、 print char(';')が見つかるまで、Token_streamからすべてを削除します。これにより、次の計算に進むことができます。これにより、別の無効なトークンが含まれないことが期待されます。clean_up_mess()
clean_up_mess()
しかし、例外処理が行われた後、プログラムは単に終了します。例外がスローされた場所から再開するには、何をする必要がありますか?そして、作者はこれを説明するのを忘れましたか、それとも私は何かを逃しましたか?
ありがとう。