問題解説)格言「Errors should never pass silently.」に準拠しているコードを、次の選択肢の中から選びなさい。

当コラムでは、PythonZen & PEP 8 検定試験(こちらでオンライン受験できます)で出題されている問題の解説を行なっています。当コラムシリーズを読んで自信がついたら、ぜひ試験に挑戦してみてくださいね。

今回のコラムで解説する試験問題はこちらです。

問題

格言「Errors should never pass silently.」に準拠しているコードを、次の選択肢の中から選びなさい。

try:
    import this
except ImportError:
    pass
try:
    import this
except ImportError:
    print('this is not available')
def division_function(a, b):
    try:
        return a / b
    except:
        pass
    finally:
        return 0
def division_function(a, b):
    try:
        return a / b
    except ZeroDivisionError as error:
        raise error
    finally:
        return 0

解答のヒント

この格言を和訳すると、「エラーは決してサイレントにpassされるべきではない」となります。つまり、発生したエラーを無視してはいけないということです。

try:
    import this
except ImportError:
    pass

1つ目の選択肢では、ImportError を受け取った後に、黙って pass しています。

try:
    import this
except ImportError:
    print('this is not available')

2つ目の選択肢では、ImportError を受け取った後に、エラーメッセージを出力しています。

def division_function(a, b):
    try:
        return a / b
    except:
        pass
    finally:
        return 0

3つ目の選択肢では、どんなエラーが発生しても何もせず pass し、finally ブロックでも return 0 しかしていません。

def division_function(a, b):
    try:
        return a / b
    except ZeroDivisionError as error:
        raise error
    finally:
        return 0

4つ目の選択肢では、ZeroDivisionError が発生した場合にエラーを投げていますが、finally ブロックではそのエラーが無視されています。

「Errors should never pass silently.」に準拠しているコードが4つの中のどれだか分かりましたでしょうか? 今回の問題は少し簡単すぎたかもしれませんね。

Zen of Pythonは、Python言語の設計哲学を端的に表現しており、Pythonのコミュニティでは広く受け入れられています。これらの格言は、Pythonのコードを書く際の指針となっています。

正解について

ここまで正解のヒントをご紹介しましたが、いかがでしょうか? この問題はPythonZen & PEP 8 検定試験で出題されています。

自信がついたら、PythonZen & PEP 8 検定試験 で実際に試験を受けてみましょう。

PAGE TOP