質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1421閲覧

Python unhandled exceptionsについて

fideo

総合スコア55

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/07/12 04:13

編集2022/07/12 06:09

Python勉強中でexceptionsの質問になります。
下記の回答はあっていますでしょうか。
もし分かる方がいましたら、教えていただけると幸いです。
お手数ですが、よろしくお願い致します。

質問
次のコードの中からunhandled exceptionsを発生させずに実行されるのはどれですか?
(次の中から選びなさい。)
(Which of the following snippets will execute without raising any unhandled exceptions?
(Select Answer.)

unhandled exceptionsの例外を発生させずといことは
exceptが発生した時のコードを選びました。

実際にやってみましたら、下記の回答でした。
回答
A,D,F,G

("A") try: print(float("lel")) except (NameError,SystemError): print(float("lal")) else: print(float("lol")) ("B") try: print(1/1) except : print(2/1) else : print(3/0) ("C") try: print(1/0) except ValueError: print(1/1) else: print(1/2) ("D") try: print(0/1) except : print(1/1) else: print(2/1) ("E") try: print(int("0")) except NameError: print("0") else: print(int("")) ("F") try: print(0/0) except : print(0/1) else: print(0/2) ("G") import math try: print(math.sqrt(-1)) except: print(math.sqrt(0)) else: print(math.sqrt(1))

回答

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2022/07/12 05:20

実際にやってみたらいいと思います。
fideo

2022/07/12 06:09

実際にやってみましたら、A,D,F,Gでした。
TakaiY

2022/07/12 07:54

で、質問は何ですか?
guest

回答1

0

ベストアンサー

unhandled exceptions(処理されない例外)を発生させず
ということですので、
例外処理に記述されていない、例外が発生しないプログラムはどれですか。
ということになります。

pythonドキュメントに以下の記載があります

もしも except 節で指定された例外と一致しない例外が発生すると、
その例外は try 文の外側に渡されます。例外に対するハンドラ (handler、処理部) が
どこにもなければ、 処理されない例外 (unhandled exception) となり、
上記に示したようなメッセージを出して実行を停止します。

https://docs.python.org/ja/3.8/tutorial/errors.html#handling-exceptions

("A")
float("lel")において、ValueErrorが発生しますが、
ValueErrorを処理する例外処理がありません。
つまり、unhandled exceptions(処理されない例外)が発生しているということです。
不正解です。

("B")
try文は正しく実行できています。しかし、else文でZeroDivisionErrorが発生しています。
しかし、ZeroDivisionErrorを処理する例外処理がありません。
つまり、unhandled exceptions(処理されない例外)が発生しているということです。
不正解です。

("C")
print(1/0)で0割をしているので、ZeroDivisionErrorが発生しています。
しかし、ZeroDivisionErrorを処理する例外処理がありません。
つまり、unhandled exceptions(処理されない例外)が発生しているということです。
不正解です。

("D")
try文、else文ともに例外は発生していません。
よって、unhandled exceptions(処理されない例外)は発生していません。
正解。

("E")
try文は正しく実行できています。しかし、else文で空文字列をint型に変更しようとしていて、
ValueErrorが発生しますが、ValueErrorを処理する例外処理がありません。
つまり、unhandled exceptions(処理されない例外)が発生しているということです。
不正解です。

("F")
print(0/0)で0割をしているので、ZeroDivisionErrorが発生しています。
しかし、exceptのワイルドカードを使って例外を受け取っているので、
unhandled exceptions(処理されない例外)は発生していません。
正解。

("G")
print(math.sqrt(-1))でValueErrorが発生していますが、exceptのワイルドカードを使って例外を受け取っているので、
unhandled exceptions(処理されない例外)は発生していません。
正解

上記をまとめると、
D,F,Gが正解

投稿2022/07/12 10:05

編集2022/07/19 09:25
East_san

総合スコア407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fideo

2022/07/13 01:34

丁寧な回答ありがとうございます。 unhandled exceptionsとhandler混乱していました。 unhandled exceptions exceptのみ・handlerがあり場合 except、処理部〇〇○:で覚えんます。
fideo

2022/07/19 03:56

度々、すいません Dですが、合っていますでしょうか。実際にやってみるとprint(0/1)は0.0として出力されます。
East_san

2022/07/19 09:27

Dの解説がCのコピーになっていたので修正しました。 print(0/1)は正常に実行できるので、例外は発生しません。つまり、unhandled exceptionsが発生しません。 また、最後のelse文も同様に正常に実行できるので、例外は発生しません。つまり、unhandled exceptionsが発生しません。 よって正解になります。
fideo

2022/07/31 05:25

回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問