2

C++ ライブラリを作成しました。iOSアプリケーションで使用しています。C++ ライブラリで例外を処理することを考えました。これをテストするために、テスト スキームを作成し、そこから c++ 関数を呼び出しました。C++ 関数では、意図的に誤ったコードを書きました。

try 
{
    int i = 0;
    int j = 10/i;
} 
catch(std::exception &e){
    printf("Exception : %s\n",e.what());
}

しかし、例外は捕捉されず、アプリケーションは - int j = 10/i; で中断します。

このシナリオで C++ コードに例外処理を追加するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

2

ゼロによる除算が発生した場合、C++ は例外をスローしません (これと他の質問も参照してください) Stroustrup の引用:

算術オーバーフローやゼロ除算などの低レベル イベントは、例外ではなく、専用の低レベル メカニズムによって処理されると見なされます。これにより、C++ は算術に関して他の言語の動作と一致させることができます。また、ゼロ除算などのイベントが非同期である、大量にパイプライン化されたアーキテクチャで発生する問題も回避します。

「C++ の設計と進化」(Addison Wesley、1994 年)

したがって、このケースを自分で処理する必要があります。除算の前に、潜在的な除数をそれぞれチェックして処理する必要があります。

于 2012-09-21T09:28:13.457 に答える