用語比較
例外処理の try/except と if による事前確認の違い
try/except と if による事前確認は、どちらもエラーを避けるための書き方です。違いは、確認するタイミングにあります。if は実行の前に条件を確かめ、try/except は実行してみて、例外が起きたら except 節で受けます。
Python3基礎試験では、設問のコードの流れから先に条件を検査しているなら if の事前確認、例外の型を指定して受けているなら try/exceptと読み分けます。どちらも同じ目的に見えるため、実行順を取り違えやすい分野です。
このページでは、処理の流れ、書き方の名前、注意点という三つの軸で比較します。else 節や finally 節の動きは、第8章の問題と用語集で確認できます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
- 公式一次資料と照合した内容
- EAFPがtry文とexcept文を多用する書き方、LBYLが事前条件をif文で検査する書き方であること、マルチスレッド環境でLBYLが検査と実行の間に競合状態を招きうること、try節で例外が起きたときの流れと一致しない例外が外側へ渡されることは、Python公式の用語集とチュートリアルのエラーと例外の章へ2026-10-12に照合しています。
- 編集部が学習用に整理した内容
- 試験での判定手順と使い分けの目安は編集部の学習上の整理です。
資格ごとの公式資料の一覧
結論
公式一次資料と照合:用語の定義は公式一次資料と照合しています。
try/except
try 節を実行し、例外が起きたら、その型に一致する except 節を実行する書き方。Python公式用語集は、この考え方をEAFP(許可を求めるより、あとで許しを請うほうが簡単)と呼ぶ。
if による事前確認
呼び出しや検索の前に、事前条件を if 文で検査する書き方。Python公式用語集は、この考え方をLBYL(跳ぶ前に見よ)と呼ぶ。
違いを表で確認
| 比較軸 | try/except | if による事前確認 |
|---|---|---|
| 確認のタイミング | 実行してみて、失敗したら受ける | 実行の前に条件を検査する |
| 目印になる構文 | try と except(多用される) | if 文(多用される) |
| 公式用語集での呼び名 | EAFP | LBYL |
| 例外が起きたとき | 型が一致する except 節へ移る | 条件が偽なら、その処理に入らない |
| マルチスレッドでの注意 | 検査と実行の間がないので、検査後の変化を気にしなくてよい | 検査と実行の間に競合状態を招くおそれがある |
| 選択肢で探すキーワード | except、例外の型、ValueError、else節、finally節 | if、in、事前条件、検査 |
公式一次資料と照合:Python3エンジニア認定基礎試験: 2026-09-18に一次資料で確認一次資料の一覧を見る →
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
どちらも同じことをしていると考えている人
結果が同じ場面はありますが、流れが違います。if は検査して通った場合だけ処理に進み、try/except は処理を始めてから失敗を受けます。設問は、実行順を問うことがあります。
if で確認すれば、常に安全だと思っている人
Python公式用語集は、マルチスレッド環境では、検査と実行の間に別のスレッドが状態を変えると、LBYLは競合状態を招くおそれがあると述べます。検査が通った後でも、実行時に失敗することがあります。
except 節が何でも受けると思っている人
公式チュートリアルは、except 節に指定した型と一致しない例外は外側の try 文へ渡され、受け手がなければ未処理の例外として停止すると述べます。except 節は、指定した型の例外だけを受けます。
具体例で使い分ける
編集部の整理
例 1
『整数が入力されるまで繰り返し入力を求める』コードが出た場合
int(input(...)) を try 節に置き、except ValueError で再入力を促しています。
- 公式チュートリアルの例では、入力が整数に変換できないときの ValueError を except 節で受けます。
- 事前に文字列を検査せず、変換を実行してから失敗を受けています。
- 書き方の名前では、EAFP(try/except)に当たります。
結論: 実行してから例外の型で受ける書き方は、try/except と判断します。
例 2
『if key in mapping: return mapping[key]』が出た場合
辞書にキーがあるかを先に調べてから、値を取り出しています。
- 実行の前に if でキーの有無を検査しているので、事前確認(LBYL)の書き方です。
- 公式用語集は、この形がマルチスレッド環境で、検査の後で検索の前にキーが削除されると失敗しうると述べます。
- 単一のスレッドで動くコードなら、この問題は表に出ません。
結論: 検査してから取り出す形は、事前確認と判断します。複数のスレッドが絡む場合は競合状態に注意します。
例 3
『例外が起きなかったときだけ実行する処理』を問われた場合
try 節の後で、例外が起きなかったときにだけ実行したい処理があります。
- 公式チュートリアルは、else 節を、try 節が例外を発生させなかったときに実行する節として説明します。
- else 節は、すべての except 節よりも後ろに置きます。
- 例外が起きたときは except 節、起きなかったときは else 節と、流れが分かれます。
結論: 例外が起きなかったときの処理は、try 文の else 節に書くと答えます。
問題文から答えを選ぶ手順
編集部の整理:試験での判定手順と使い分けの目安は編集部の学習上の整理です。
- 1
確認するタイミングを探す
実行の前に if で検査していれば事前確認、実行してから except で受けていれば try/except です。
- 2
except 節の型を確認する
指定した型と一致する例外だけが受けられ、一致しなければ外側へ渡されます。
- 3
実行されない節を確認する
例外が起きたら、try 節の残りは飛ばされます。例外が起きなければ except 節は飛ばされます。
- 4
並行処理の語を確認する
複数のスレッドが出てきたら、検査と実行の間の競合状態を疑います。
試験での見分け方
編集部の整理
- 1try 節で例外が起きると、その節の残りは飛ばされ、型が一致する except 節が実行される。
- 2except 節に指定した型と一致しない例外は、外側の try 文へ渡され、受け手がなければ未処理の例外として停止する。
- 3else 節は、try 節が例外を発生させなかったときに実行され、すべての except 節よりも後ろに置く。
- 4EAFPは、多くの try 文と except 文が特徴の書き方。
- 5LBYLは、事前条件を検査する多くの if 文が特徴の書き方。
- 6マルチスレッド環境のLBYLは、検査と実行の間に競合状態を招くおそれがある。
誤答しやすい選択肢
if の事前確認をしていれば、例外は絶対に起きないと考える
修正: 検査が通った後で、状態が変わることがあります。公式用語集は、複数のスレッドが絡む場合の競合状態を挙げています。
except 節がすべての例外を受けると考える
修正: except 節が受けるのは、指定した型と、その派生クラスの例外です。一致しない例外は外側へ渡されます。
例外が起きても、try 節の残りが実行されると考える
修正: 例外が起きると、try 節の残りは飛ばされ、一致する except 節へ移ります。
else 節を、例外が起きたときの節と考える
修正: else 節は、try 節が例外を発生させなかったときに実行されます。
確認問題
Q1Python公式用語集で、多くの try 文と except 文が特徴の書き方は何と呼ばれますか?
答え: EAFP
EAFPは、有効なキーや属性があると仮定し、誤りなら例外を捕捉する書き方で、多くの try 文と except 文が特徴だと述べられています。
Q2try 節が例外を発生させなかったときにだけ実行される節はどれですか?
答え: else 節
else 節は、try 節で例外が発生しなかったときに実行されます。すべての except 節よりも後ろに置きます。
Q3except 節に指定した型と一致しない例外が起きたとき、どうなりますか?
答え: 外側の try 文へ渡される
一致しない例外は外側の try 文へ渡され、受け手がなければ未処理の例外としてエラーメッセージとともに実行が止まります。
到達チェック
- try/except と if の事前確認で、確認のタイミングが違うことを言える
- EAFPとLBYLが、それぞれ何を指すか説明できる
- except 節が一致する型だけを受けることを説明できる
- else 節が例外なしのときに実行されることを説明できる
- LBYLの競合状態の注意点を説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- 内包表記のifの位置の違い|末尾のif句(絞り込み)と先頭のif-else(値の切り替え)
リスト内包表記の末尾にif句を置く書き方と、先頭にif-elseの条件式を置く書き方の違いを、要素数が変わるかどうか、elseを書けるかどうかから解説。Python 3 エンジニア認定基礎試験での読み取り手順と確認問題つきです。
- for文とwhile文の使い分け
Pythonの for 文と while 文の違いを、繰り返しの終わり方、range()、else節、break と continue の動き、Python3基礎試験での判断手順と確認問題まで解説します。
- リスト内包表記とfor文の使い分け
リスト内包表記とfor文の使い分けを、同じ処理の書き比べ、ifの位置、ループ変数の扱い、Python 3 エンジニア認定基礎試験での読み取り手順と確認問題まで解説します。
よくある質問
Qtry/except と if による事前確認の最大の違いは何ですか?
確認するタイミングです。if は実行の前に条件を検査し、try/except は実行してみて、例外が起きたら except 節で受けます。
QEAFPとLBYLは何の略ですか?
EAFPは Easier to ask for forgiveness than permission、LBYLは Look before you leap の略です。Python公式用語集に載っています。
QLBYLにはどんな注意点がありますか?
Python公式用語集は、マルチスレッド環境で検査と実行の間に競合状態を招くおそれがあると述べています。
Qexcept 節に指定した型と一致しない例外はどうなりますか?
外側の try 文へ渡されます。受け手がなければ、未処理の例外としてエラーメッセージを出して停止します。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
