Python の学習 - 例外

巴扎黑
リリース: 2016-12-09 14:05:16
オリジナル
1346 人が閲覧しました

例外

プログラムに何らかの異常な条件が現れると、異常が発生します。たとえば、特定のファイルを読み込もうとしたときに、そのファイルが存在しない場合です。または、プログラムの実行中に誤って削除してしまいました。上記の状況は例外を使用して処理できます。

プログラムに無効なステートメントがある場合はどうなりますか? Python は、エラーを発生させて通知することで、このような状況を処理します。

try..例外

1. 例外を処理する

' s ' s ' s 1. 例外の処理
out out out out to
' out through out out through using off through ‐to ‐ ‐‐ ‐‐ ‐ to handle例外

通常のステートメントを try ブロックに置き、エラー処理ステートメントを例外ブロックに置きます。

例外処理の例は次のとおりです:

import sys
try:
    s = raw_input('Enter something --> ')
except EOFError:
    print '\nWhy did you do an EOF on me?'
    sys.exit()
except:
    print '\nSome error/exception occurred.' 
print 'Done'
ログイン後にコピー

出力:


Python コード

Enter something --> +  
Done
ログイン後にコピー

エラーを引き起こす可能性のあるすべてのステートメントを try ブロックに配置し、すべてのエラーと例外を例外句/ブロックで処理します。 Except 句は、単一のエラーや異常、あるいは括弧内に含まれる一連のエラーや異常を具体的に処理できます。エラーまたは例外の名前が指定されていない場合は、すべてのエラーと例外が処理されます。すべての try 節には、少なくとも 1 つの例外節が関連付けられています。
エラーまたは例外が処理されない場合は、デフォルトの Python ハンドラーが呼び出されます。これはプログラムを終了し、メッセージを出力しますが、これはすでに実行されていることがわかります。
try..catch ブロックを else 句に関連付けることもできます。例外が発生しない場合は、else 句が実行されます。

2. 例外を発生させる
例外オブジェクトを取得して、この例外に関する詳細情報を取得することもできます。

raise ステートメントを使用して例外を発生させることができます。エラー/例外の名前と、例外によってトリガーされた例外オブジェクトも指定する必要があります。発生させることができるエラーまたは例外は、それぞれ Error クラスまたは Exception クラスの直接または間接的な派生クラスである必要があります。

例外を発生させる方法の例は次のとおりです:

class ShortInputException(Exception):
    '''A user-defined exception class.'''
    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast
try:
    s = raw_input('Enter something --> ')
    if len(s) < 3:
        raise ShortInputException(len(s), 3)
except EOFError:
    print &#39;\nWhy did you do an EOF on me?&#39;
except ShortInputException, x:
    print &#39;ShortInputException: The input was of length %d, \
          was expecting at least %d&#39; % (x.length, x.atleast)
else:
    print &#39;No exception was raised.&#39;
ログイン後にコピー

出力:

Python コード

Enter something --> 2222  
No exception was raised.  
Enter something --> 1  
ShortInputException: The input was of length 1,           was expecting at least 3
ログイン後にコピー

ここでは、独自の例外タイプを作成しました。実際には、事前定義された例外/エラーを使用できます。この新しい例外タイプは ShortInputException クラスです。これには 2 つのフィールドがあります。length は指定された入力の長さ、atleast はプログラムが予期する最小の長さです。
例外句では、エラー/例外オブジェクトを表すために使用されるエラー クラスと変数を提供します。これは、関数呼び出しにおける仮パラメータと実パラメータの概念に似ています。この特定の例外句では、例外オブジェクトの長さと少なくともフィールドを使用して、適切なメッセージをユーザーに出力します。

試してください...最後に

ファイルを読んでいて、例外が発生するかどうかに関係なくファイルを閉じたい場合、どうすればよいでしょうか?これは、finally ブロックを使用して実行できます。 try ブロック内では、Except 句と Finally ブロックの両方を使用できることに注意してください。同時に使用したい場合は、一方をもう一方に埋め込む必要があります。

finallyの使用例は以下の通りです:

import time
f = file(&#39;poem.txt&#39;)
try:  
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        time.sleep(2)
        print line,
finally:
    f.close()
    print &#39;Cleaning up...closed the file&#39;
ログイン後にコピー

出力:

Pythonコード

Programming is fun  
When the work is done  
if you wanna make your work also fun:  
        use Python!  
Cleaning up...closed the file
ログイン後にコピー

通常のファイル読み込み作業を行っていますが、あえてtime.sleepメソッドを使って一行出力する前に2秒間一時停止させています。この理由は、プログラムの実行速度を遅くするためです (Python はその性質上、通常非常に高速に実行されます)。プログラムの実行中に Ctrl-c を押すと、プログラムを中断/キャンセルできます。 KeyboardInterrupt 例外がトリガーされ、プログラムが終了することがわかります。ただし、プログラムが終了する前に、finally 句が引き続き実行され、ファイルが閉じられます。

🎜🎜
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート