LoginSignup
0
3

More than 3 years have passed since last update.

【Python 3 エンジニア認定基礎試験】エラーと例外 

Last updated at Posted at 2021-04-30

はじめに

PRIME STUDY (プライム・スタディ) python3エンジニア認定試験
模擬試験 第一回 問31の「エラーと例外ーユーザー定義例外」
で勉強になったことをメモ。

目次

  1. 構文エラーと例外
  2. 31問目
    1. コード
    2. 解説
  3. 参考文献

構文エラーと例外

構文エラー:構文の解釈上のエラーで、エラーは検知されたときに出る^マーク前にあることを示している。
例外:構文エラーではないが、エラーとして検知されたもの。必ずしも致命的ではない。

31問目

コード

Python.ipynb
class OurException(Exception): #(1)独自の例外
    pass

def raise_her_exception(a): #(2)
    print(a, "is a")
    raise OurException #raise:指定した例外(ここでは(1))を発生させる※1
    print("easygoing person.")

def func(key: int): #(3)key(int型)を引数とする関数
    try:
        if key == 0:
            raise_her_exception("Saya") #(2)へ→※1のエラーがでる→exceptへ(例外処理)
    except OurException as e:
        print("intelligent")
        raise Exception #raise:指定した例外(ここではException)を発生させる※2

key = 0
try:
    func(key) #(3)へ→※2のエラーがでる→exceptへ(例外処理)
except Exception as f:
    print("speedster.")

Saya is a
intelligent
speedster

解説

(1)独自の例外
まず、OurExceptionで独自の例外を書きます
(3)key(int型)を引数とする関数
key :intで、型をintに指定(引数が実際にintじゃなくても動く)

処理は以下のようになされる。
1. クラスと関数の定義(1),(2),(3)
2. keyの定義
3. func(key)→(3)へ
ここからは上のコードの数を追っていけば流れがわかる。

Key

コードの(2)のraise OurExceptionをコメントアウトすると、以下のように出力される

Saya is a
easygoing person.

ここではraiseがコメントアウトされたため、(3)で記載している「※1のエラーがでる→exceptへ(例外処理)」の流れがなかった。
したがってその次のexcept OurException as e:に行かず、
結果的にexcept Exception as f:print("speedster.")
も処理されなかったわけである。

参考文献

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3