C では、コードによってスローされた例外を処理するために try-catch ブロックが使用されます。これらのブロックは Java のブロックと似ていますが、いくつかの違いがあります。
主な違いの 1 つは、C には Java のようなキャッチオール例外がないことです。 Java では、catch (Throwable t) ブロックを使用してすべての例外をキャッチできます。ただし、C では、各タイプの例外を明示的にキャッチする必要があります。
どのタイプの例外がスローされるかわからない場合、これは問題になる可能性があります。この場合、catch (...) ブロックを使用してすべての例外をキャッチできます。ただし、これは一般に悪い習慣であると考えられています。
より良いアプローチは、特定の種類の例外をキャッチすることです。これにより、各例外を適切に処理できるようになります。たとえば、 std::Exception クラスから派生した例外の std::Exception をキャッチできます。 std::runtime_error や std::bad_alloc など、特定のタイプの例外をキャッチすることもできます。
特定のタイプの例外をキャッチする方法の例を次に示します。
<code class="cpp">try { // ... } catch (const std::exception& ex) { // ... } catch (const std::runtime_error& ex) { // ... } catch (const std::bad_alloc& ex) { // ... }</code>
これこの例では、std::Exception、std::runtime_error、std::bad_alloc の 3 つの異なるタイプの例外をキャッチします。これらの例外のいずれかがスローされると、対応する catch ブロックが実行されます。
どのタイプの例外がスローされるかわからない場合は、catch (...) ブロックを使用してすべてをキャッチできます。例外。ただし、これは一般的に推奨されません。適切に処理できるように、特定のタイプの例外をキャッチすることをお勧めします。
以上がC の例外処理は Java の例外処理とどう違うのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。