📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
例外処理は、プログラムの実行中に発生する予期しないエラーや異常な状況を適切に管理するための重要な機能である。<br> | |||
<br> | |||
Qtでは、C++の標準例外機構を基本として、Qt独自の拡張が加えられている。<br> | |||
<code>try-catch</code>ブロックを使用して、潜在的に例外を投げる可能性のあるコードを囲み、発生した例外を捕捉する。<br> | |||
<br> | |||
<code>QException</code>クラスは、Qtフレームワーク内で使用される基本的な例外クラスである。<br> | |||
このクラスは<code>std::exception</code>を継承しており、Qtに特化した例外を定義するための基盤となっている。<br> | |||
<br> | |||
例外を投げる場合は、<code>throw</code>キーワードを使用する。<br> | |||
<syntaxhighlight lang="c++"> | |||
if (<条件式>) { | |||
throw QException(); | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
これを捕捉するには、以下に示すように記述する。<br> | |||
<syntaxhighlight lang="c++"> | |||
try { | |||
// 例外が発生する可能性のあるコード | |||
} | |||
catch (const QException &e) { | |||
// QExceptionの処理 | |||
} | |||
catch (const std::exception &e) { | |||
// その他の標準C++例外の処理 | |||
} | |||
catch (...) { | |||
// あらゆる例外の処理 | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<code>QException</code>クラスには、<code>raise</code>メソッドがある。<br> | |||
これは、例外を再スローするのに便利であり、例外の連鎖を作成する場合に使用される。<br> | |||
<br> | |||
また、Qtは、より具体的な例外クラスも提供している。<br> | |||
例えば、<code>QNoMemory</code>等があり、特定のエラー状況に対応している。<br> | |||
<br> | |||
例外処理を適切に使用することにより、エラーの発生箇所と処理箇所を分離して、コードの可読性と保守性を向上させることができる。<br> | |||
ただし、過度な使用は避け、本当に必要な場合にのみ例外を使用することが推奨される。<br> | |||
<br> | |||
また、Qtでは例外を完全に無効化することもできる。<br> | |||
これは、例外処理のオーバーヘッドを避ける場合や、例外をサポートしていないプラットフォームで開発する場合に有効である。<br> | |||
<br><br> | <br><br> | ||