# 二つの整数値を読み込んで乗算と除算を行う
a = int(input('整数a:'))
b = int(input('整数b:'))
print(f'a * b は {a * b} です。')
print(f'a / b は {a / b} です。')
C:>python xxx.py
整数a:5
整数b:3
a * b は 15 です。
a / b は 1.6666666666666667 です。
# 乗算と除算を行うプログラム(例外処理:その1)
try:
a = int(input('整数a:'))
b = int(input('整数b:'))
print(f'a * b は {a * b} です。')
print(f'a / b は {a / b} です。')
except ValueError:
print('整数と認識できません!')
except ZeroDivisionError:
print('ゼロによる除算!')
else:
print('正常終了!')
finally:
print('お疲れさまでした。')
C:>python xxx.py
整数a:8
整数b:6
a * b は 48 です。
a / b は 1.3333333333333333 です。
正常終了!
お疲れさまでした。
# 乗算と除算を行うプログラム(例外処理:try-finally文)
try:
a = int(input('整数a:'))
b = int(input('整数b:'))
print(f'a * b は {a * b} です。')
print(f'a / b は {a / b} です。')
print('正常終了!')
finally:
print('お疲れさまでした。')
C:>python xxx.py
整数a:4
整数b:5
a * b は 20 です。
a / b は 0.8 です。
正常終了!
お疲れさまでした。
# 乗算と除算を行うプログラム(例外処理:その2)
try:
a = int(input('整数a:'))
b = int(input('整数b:'))
print(f'a * b は {a * b} です。')
print(f'a / b は {a / b} です。')
except (ValueError, ZeroDivisionError):
print('認識不能orゼロ除算!')
else:
print('正常終了!')
finally:
print('お疲れさまでした。')
C:>python xxx.py
整数a:9
整数b:5
a * b は 45 です。
a / b は 1.8 です。
正常終了!
お疲れさまでした。
# 乗算と除算を行うプログラム(例外処理:その3)
try:
a = int(input('整数a:'))
b = int(input('整数b:'))
print('a * b は', a * b, 'です。')
print('a / b は', a / b, 'です。')
except (ValueError, ZeroDivisionError) as e:
print(type(e))
print('認識不能orゼロ除算!')
else:
print('正常終了!')
finally:
print('お疲れさまでした。')
C:>python xxx.py
整数a:1
整数b:5
a * b は 5 です。
a / b は 0.2 です。
正常終了!
お疲れさまでした。
# 乗算と除算を行うプログラム(例外処理:その4)
try:
a = int(input('整数a:'))
b = int(input('整数b:'))
print('a * b は', a * b, 'です。')
print('a / b は', a / b, 'です。')
except ValueError:
print('整数と認識できません!')
except ZeroDivisionError:
print('ゼロによる除算!')
except:
print('例外発生!')
else:
print('正常終了!')
finally:
print('お疲れさまでした。')
C:>python xxx.py
整数a:3
整数b:5
a * b は 15 です。
a / b は 0.6 です。
正常終了!
お疲れさまでした。
# raise文による例外の送出
def func(sw: int) -> None:
match sw:
case 0: raise ValueError
case 1: raise ZeroDivisionError
sw = int(input('sw:'))
try:
func(sw)
except BaseException as e:
print('例外捕捉!')
print(type(e))
C:>python xxx.py
sw:5
# ユーザ定義の例外を送出
class MyException(Exception):
"""マイ例外"""
pass
def raise_my_exception() -> None:
raise MyException
def func(sw: int) -> None:
try:
if sw == 0:
raise_my_exception()
except MyException as e:
print('マイ例外を捕捉。')
# マイ例外に対する対処を試みる。
# 回復不可能と判断。
print('回復できませんでした。')
raise Exception
sw = int(input('sw:'))
try:
func(sw)
except Exception as e:
print('例外捕捉!')
print(type(e))
C:>python xxx.py
sw:6
# ユーザ定義の例外を送出([3]をraiseに変更)
class MyException(Exception):
"""マイ例外"""
pass
def raise_my_exception() -> None:
raise MyException
def func(sw: int) -> None:
try:
if sw == 0:
raise_my_exception()
except MyException as e:
print('マイ例外を捕捉。')
# マイ例外に対する対処を試みる。
# 回復不可能と判断。
print('回復できませんでした。')
raise
sw = int(input('sw:'))
try:
func(sw)
except Exception as e:
print('例外捕捉!')
print(type(e))
C:>python xxx.py
sw:3
# ユーザ定義の例外を送出([3]を削除)
class MyException(Exception):
"""マイ例外"""
pass
def raise_my_exception() -> None:
raise MyException
def func(sw: int) -> None:
try:
if sw == 0:
raise_my_exception()
except MyException as e:
print('マイ例外を捕捉。')
# マイ例外に対する対処を試みる。
# 回復不可能と判断。
print('回復できませんでした。')
# 何も行わない
sw = int(input('sw:'))
try:
func(sw)
except Exception as e:
print('例外捕捉!')
print(type(e))
C:>python xxx.py
sw:3
# ユーザ定義の例外を送出(トレースバックを表示)
import traceback
class MyException(Exception):
"""マイ例外"""
pass
def raise_my_exception() -> None:
raise MyException
def func(sw: int) -> None:
try:
if sw == 0:
raise_my_exception()
except MyException as e:
print('マイ例外を捕捉。')
# マイ例外に対する対処を試みる。
# 回復不可能と判断。
print('回復できませんでした。')
raise Exception
sw = int(input('sw:'))
try:
func(sw)
except Exception as e:
print('例外捕捉!')
print(traceback.format_exc()) # トレースバックを表示
print(type(e))
C:>python xxx.py
sw:4
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント