Pythonの例外の継承とカスタム例外コード例を実装

この記事では、Pythonの例外の継承について説明し、カスタム例外コード例を実装し、テキストによってサンプルコードでは、非常に詳細に説明習得したり、作業するために私たちのすべてのための学習の一定の基準値を持って、困っている友達を参照することができます

異常のpythonの継承を紹介し、どのようにカスタム例外

  1. すべての例外の珍しい継承BaseException#基底クラス
+-- SystemExit # 解释器请求退出
 +-- KeyboardInterrupt  用户中断执行(通常是输入^C)
 +-- GeneratorExit # 生成器(generator)发生异常来通知退出
 +-- Exception # 常规异常的基类
  +-- StopIteration # 迭代器没有更多的值
  +-- StandardError # 标准错误
  | +-- BufferError
  | +-- ArithmeticError
  | | +-- FloatingPointError
  | | +-- OverflowError
  | | +-- ZeroDivisionError
  | +-- AssertionError
  | +-- AttributeError
  | +-- EnvironmentError
  | | +-- IOError
  | | +-- OSError
  | |   +-- WindowsError (Windows)
  | |   +-- VMSError (VMS)
  | +-- EOFError
  | +-- ImportError
  | +-- LookupError
  | | +-- IndexError
  | | +-- KeyError
  | +-- MemoryError
  | +-- NameError
  | | +-- UnboundLocalError
  | +-- ReferenceError
  | +-- RuntimeError
  | | +-- NotImplementedError
  | +-- SyntaxError
  | | +-- IndentationError
  | |   +-- TabError
  | +-- SystemError
  | +-- TypeError
  | +-- ValueError
  |   +-- UnicodeError
  |    +-- UnicodeDecodeError
  |    +-- UnicodeEncodeError
  |    +-- UnicodeTranslateError
  +-- Warning
   +-- DeprecationWarning
   +-- PendingDeprecationWarning
   +-- RuntimeWarning
   +-- SyntaxWarning
   +-- UserWarning
   +-- FutureWarnin
   +-- ImportWarnin
   +-- UnicodeWarnin
   +-- BytesWarning
  1. カスタム例外
#自定义异常 需要继承Exception
class MyException(Exception):
 
 def __init__(self, *args):
  self.args = args
 
if __name__ == '__main__':
 try:
  raise MyException("自定义异常")
 except MyException as e:
  print e
  1. 例外トラップ
# 示例
str1 = 'abc'
try:
 int(str1)
except IndexError as e:
 print e
except KeyError as e:
 print e
except ValueError as e:
 print e
else:
 print 'try内正常处理'
finally:
 print '无论异常与否,都会执行我'
  1. アクティブトリガー異常
# raise xxx
def test_zero(num):
 try:
  if num == 0:
   raise ValueError('参数错误')
  return num
 except Exception as e:
  print e
 
test_zero(0)
  1. トレースバックモジュールを使用して表示異常

例外が発生すると、Pythonがスローされた例外とプログラムの現在の状態を「記憶」することができます。
Pythonは、例外が発生したときに関数呼び出しスタックに関する情報が含まれてトレースバック(追跡)オブジェクトを維持します。
異常が深く入れ子になった関数呼び出しのシリーズで発生することができます。
プログラムは、各関数を呼び出すと、Pythonは先頭に「関数呼び出しスタック」に関数名を挿入します。例外が発生したら、Pythonは適切な例外ハンドラを検索します。現在の関数も例外ハンドラ、現在の関数を終了する実行されていない場合、Pythonは、関数の現在の発信者を検索します、というように、試合は例外ハンドラを見つけられるまで、またはPythonは、メインプログラムまで到着します。検索、適切な例外ハンドラは、(StackUnwinding)「ソリューションを開くために除去スタック」と呼ばれています。
インタプリタは、それはまた、関連する「オープンなソリューションをヒラメ」スタック機能からの情報を保持し、一方で情報を維持し、関連する関数のスタックを配置します。

#示例
def div(num1, num2):
 try:
  result = num1/num2
  return result
 except Exception as e:
  traceback.print_exc()
 
print div(1, 0)
#执行结果
Traceback (most recent call last):
None
 File "F:/Technology-20161005/python/python_project/demo/exceptiondemo/exceptiondemo.py", line 17, in div
 result = num1/num2
ZeroDivisionError: integer division or modulo by zero
# 可以将异常信息写到文件中
traceback.print_exc(file=open('1.txt','w+'))

最後に、私は良い評判のpython収集をお勧めします[ 入力する]をクリックした経験を学び、スキルを習得古いタイマーがたくさんあります、]

、インタビューのスキル、職場体験や他のシェアは、より慎重に毎日ゼロベースの入門情報、実際のプロジェクトに関する情報、プログラマを準備しました

Pythonのメソッド学習と細部に注意を払う必要があるのいくつかを共有するために、技術のタイミングを説明するための

公開された48元の記事 ウォン称賛21 ビュー60000 +

おすすめ

転載: blog.csdn.net/haoxun11/article/details/105081866