Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの例外とは何ですか?


例外は、プログラムの実行中に発生するイベントであり、プログラムの命令の通常のフローを中断します。一般に、Pythonスクリプトが対処できない状況に遭遇すると、例外が発生します。例外は、エラーを表すPythonオブジェクトです。

Pythonスクリプトで例外が発生した場合は、すぐに例外を処理する必要があります。そうしないと、終了して終了します。

例外の処理

例外を発生させる可能性のある疑わしいコードがある場合は、疑わしいコードを試して配置することで、プログラムを防御できます。 : ブロック。 try:ブロックの後、例外を含めます :ステートメントの後に、問題を可能な限りエレガントに処理するコードのブロックが続きます。

構文

これがtry....except...elseブロックの簡単な構文です-

try:
   You do your operations here;
   ......................
except ExceptionI:
   If there is ExceptionI, then execute this block.
except ExceptionII:
   If there is ExceptionII, then execute this block.
   ......................
else:
   If there is no exception then execute this block.

上記の構文に関するいくつかの重要なポイントがあります-

  • 単一のtryステートメントに複数のexceptステートメントを含めることができます。これは、tryブロックにさまざまなタイプの例外をスローする可能性のあるステートメントが含まれている場合に役立ちます。
  • 例外を処理する一般的なexcept句を指定することもできます。
  • except句の後に、else句を含めることができます。 elseブロックのコードは、try:ブロックのコードで例外が発生しない場合に実行されます。
  • else-blockは、try:ブロックの保護を必要としないコードに適した場所です。

この例では、ファイルを開き、ファイルにコンテンツを書き込み、まったく問題がないため、正常に出力されます-

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"
   fh.close()
を出力する

出力

これにより、次の結果が生成されます-

Written content in the file successfully

この例では、書き込み権限がないファイルを開こうとしているため、例外が発生します-

#!/usr/bin/python
try:
   fh = open("testfile", "r")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"

出力

これにより、次の結果が生成されます-

Error: can't find file or read data

例外のない例外条項

次のように定義された例外なしでexceptステートメントを使用することもできます-

try:
   You do your operations here;
   ......................
except:
   If there is any exception, then execute this block.
   ......................
else:
   If there is no exception then execute this block.

この種の試してみてください ステートメントは、発生するすべての例外をキャッチします。ただし、この種のtry-exceptステートメントを使用することは、すべての例外をキャッチしますが、発生する可能性のある問題の根本原因をプログラマーに特定させないため、優れたプログラミング手法とは見なされません。

複数の例外がある例外句

次のように、同じexceptステートメントを使用して複数の例外を処理することもできます-

try:
   You do your operations here;
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   If there is any exception from the given exception list,
   then execute this block.
   ......................
else:
   If there is no exception then execute this block.

try-finally節

最終的にを使用できます :試してと一緒にブロックする : ブロック。 finallyブロックは、tryブロックで例外が発生したかどうかに関係なく、実行する必要のあるコードを配置する場所です。 try-finallyステートメントの構文は次のとおりです-

try:
   You do your operations here;
   ......................
   Due to any exception, this may be skipped.
finally:
   This would always be executed.
   ......................

else句をfinally句と一緒に使用することはできません。

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
finally:
   print "Error: can\'t find file or read data"

出力

書き込みモードでファイルを開く権限がない場合、次の結果が生成されます-

Error: can't find file or read data

同じ例を次のようにすっきりと書くことができます-

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   try:
      fh.write("This is my test file for exception handling!!")
   finally:
      print "Going to close the file"
      fh.close()
except IOError:
   print "Error: can\'t find file or read data"

tryブロックで例外がスローされると、実行はすぐにfinallyブロックに渡されます。 finallyブロック内のすべてのステートメントが実行された後、例外が再度発生し、try-exceptステートメントの次の上位層に存在する場合はexceptステートメントで処理されます。


  1. PythonのOSモジュールとは何ですか

    はじめに PythonのOSモジュールには、開発者が現在作業しているオペレーティングシステムと対話できるようにするさまざまな機能が付属しています。この記事では、主にディレクトリ/フォルダの作成と削除、ディレクトリの名前の変更、さらにはファイル処理の基本について学習します。 面倒なことはせずに、始めましょう。 はじめに PythonのOSモジュールは、インストール時にpython内にパッケージ化されています。これは、PIPを使用して個別にインストールする必要がないことを意味します。さまざまなメソッド/関数にアクセスするには、モジュールをインポートする必要があります。 import os

  2. PythonのCGIとは何ですか?

    Common Gateway Interface(CGI)は、外部ゲートウェイプログラムがHTTPサーバーなどの情報サーバーとインターフェイスするための標準です。 現在のバージョンはCGI/1.1であり、CGI/1.2は進行中です。 ウェブブラウジング CGIの概念を理解するために、ハイパーリンクをクリックして特定のWebページまたはURLを参照するとどうなるかを見てみましょう。 ブラウザがHTTPWebサーバーに接続し、URL、つまりファイル名を要求します。 WebサーバーはURLを解析し、ファイル名を探します。そのファイルが見つかった場合はブラウザに送り返します。それ以外の場合は、