1つの画像フロー:Pythonのすべての組み込み例外


みなさん、こんにちは。Crossinのプログラミング教室へようこそ。

プログラムを作成するときに、いくつかの例外を報告することがよくあります。一方では、あなた自身の怠慢がプログラムにエラーメッセージを表示させたためです。他方では、クロール時など、プログラムの実行中にいくつかの例外が避けられないためです。構造に一貫性のないWebページがいくつかありますが、現時点では、同じコードセットの2つのWebページでミスが発生するため、エラーメッセージが原因でプログラムが終了しないように例外をキャッチする必要があります。

Pythonには多くの組み込みの例外があります。つまり、Python開発者は、ユーザープログラミング中にこのようなエラーが発生する可能性があることを事前に考慮しているため、これらの組み込みの例外を作成すると、エラー情報をユーザーにすばやく正確にフィードバックして、コードのバグを見つけることができます。

すべての組み込みの例外とトリガー条件は、公式のPythonドキュメントにも記載されています。読みやすくするために、すべての例外とトリガー条件をマインドマップに整理しました(クリックして拡大、水平方向に表示)。

HDバージョンのダウンロードアドレスは記事の最後に添付されています

以下は、いくつかの一般的な例外の個別の紹介であり、例を通じて、どの例外がどのような条件下でトリガーされるかについての詳細な理解です。

1、 SyntaxError

SyntaxErrorは主に、コロンの欠落、複数の引用符など、Python構文のエラーが原因で発生します。プログラミング中に少し不注意を行うとエラーが発生します。これは最も一般的な異常エラーです。

In [1]: While True print('1')
 File "<ipython-input-1-8ebf67bb4c2b>", line 1
 While True print('1')^
SyntaxError: invalid syntax

2、 TypeError

TypeErrorはタイプエラーです。つまり、整数タイプと文字タイプの加算と減算、2つのリスト間の減算など、不適切なタイプのオブジェクトに操作または関数が適用された場合に発生します。

In [8]: a =[1,2];b =[2,3]
In [9]: a-b
---------------------------------------------------------------------------
TypeError                                 Traceback(most recent call last)<ipython-input-9-5ae0619f8fe1>in<module>---->1 a-b

TypeError: unsupported operand type(s)for-:'list' and 'list'

3、 IndexError

IndexErrorは、インデックスのエラーを指します。たとえば、最も一般的な添え字インデックスがシーケンスの境界を超えています。たとえば、シーケンスmに要素が3つしかない場合、m [4]にアクセスしようとします。

In [16]: m =[1,2,3]
In [17]: m[4]---------------------------------------------------------------------------
IndexError                                Traceback(most recent call last)<ipython-input-17-94e0dfab3ff6>in<module>---->1 m[4]

IndexError: list index out of range

4、 KeyError

KeyErrorはキーワードエラーです。この例外は主に辞書で発生します。たとえば、ユーザーが辞書に存在しないキーにアクセスしようとすると発生します。

In [18]: dict_ ={'1':'yi','2':'er'}
In [19]: dict_['3']---------------------------------------------------------------------------
KeyError                                  Traceback(most recent call last)<ipython-input-19-c2e43847635f>in<module>---->1 dict_['3']

KeyError:'3'

5、 ValueError

ValueErrorは値エラーであり、値のタイプが正しい場合でも、たとえばリストに存在しない値のインデックスを取得する場合など、呼び出し元が予期しない値をユーザーが渡したときに発生します。

In [22]: n =[1,2,3]
In [23]: n.index(4)---------------------------------------------------------------------------
ValueError                                Traceback(most recent call last)<ipython-input-23-9a1887cf29d7>in<module>---->1 n.index(4)

ValueError:4 is not in list

6、 AttributeError

AttributeErrorは、ユーザーがオブジェクトに存在しない属性にアクセスしようとしたときに発生する属性エラーです。たとえば、リストにはインデックスメソッドがありますが、ディクショナリにはないため、ディクショナリオブジェクトでこのメソッドを呼び出すと例外が発生します。

In [25]: dict_ ={'1':'yi','2':'er'}
In [26]: dict_.index('1')---------------------------------------------------------------------------
AttributeError                            Traceback(most recent call last)<ipython-input-26-516844ad2563>in<module>---->1 dict_.index('1')

AttributeError:'dict' object has no attribute 'index'

7、 NameError

NameErrorは、変数名のエラーを指します。たとえば、ユーザーが割り当てまたは初期化されていない変数を呼び出そうとするとトリガーされます。

In [27]:print(list_)---------------------------------------------------------------------------
NameError                                 Traceback(most recent call last)<ipython-input-27-87ebf02ffcab>in<module>---->1print(list_)

NameError: name 'list_' is not defined

8、 FileNotFoundError

FileNotFoundErrorはファイルを開くエラーであり、ユーザーが読み取りモードで存在しないファイルを開こうとすると発生します。

In [29]: fb =open('./list','r')---------------------------------------------------------------------------
FileNotFoundError                         Traceback(most recent call last)<ipython-input-29-1b65fe5400ea>in<module>---->1 fb =open('./list','r')

FileNotFoundError:[Errno 2] No such file or directory:'./list'

9、 StopIteration

StopIterationはイテレーターエラーです。イテレーターの最後の値までアクセスが継続されると、この例外が発生し、イテレーターにアクセスする値がないことをユーザーに通知します。

In [30]: list1 =[1,2]
In [31]: list2 =iter(list1)
In [33]:next(list2)
Out[33]:1

In [34]:next(list2)
Out[34]:2

In [35]:next(list2)---------------------------------------------------------------------------
StopIteration                             Traceback(most recent call last)<ipython-input-35-5a5a8526e73b>in<module>---->1next(list2)

10、 AssertionError

AssertionErrorはアサーションエラーです。ユーザーがアサーションステートメントを使用して例外を検出した場合、アサーションステートメントによって検出された式がfalseの場合、この例外が発生します。

In [45]: list3 =[1,2]

In [46]: assert len(list3)>2---------------------------------------------------------------------------
AssertionError                            Traceback(most recent call last)<ipython-input-46-ffd051e2ba94>in<module>---->1 assert len(list3)>2

AssertionError:

上記の異常は、通常のプログラミングで頻繁に発生する部分です。その他の種類の異常については、上記のマインドマップまたは公式文書を参照してください。もちろん、Pythonは、ユーザーが必要に応じて例外をカスタマイズすることもサポートしています。

Pythonには、例外のキャッチ、積極的な例外のスローなど、例外を処理するための強力な機能もあります。主に次の方法があります。

この記事のマインドマップはBaiduマインドマップを使用して描かれています。オンラインディスクにも入れています。自分で追加および変更できます。

マインドマップのダウンロード:

https://pan.baidu.com/s/1X4NIoRec1umU6Dhh9GobQQ

抽出コード:tcwy

公式文書:

https://docs.python.org/3/library/exceptions.html#base-classes

著者:タフィー猫

出典:Meow Talking Python


_ 以前の記事の推奨事項_

[ ある記事では、Pythonの異常な情報を理解する方法を説明しています](http://mp.weixin.qq.com/s?__biz=MjM5MDEyMDk4Mw==&mid=2650168776&idx=2&sn=e965016f826c8c90062323f7a2a26e0b&chksm=be4b50b0893bc9a64


Recommended Posts

1つの画像フロー:Pythonのすべての組み込み例外
1分でPythonを学ぶ|オブジェクト指向(中国語)
1分でPythonを学ぶ| Python関数(オン)
1分でPythonを学ぶ|オブジェクト指向(パート1)
Pythonで正規表現を取得するための1つの記事
Pythonレビュー1
pythonの関数