異常、例外メッセージ文字列を返す方法を除く除くPythonの試み

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

https://docs.python.org/3/library/exceptions.html#ValueError

試し
    int型(" X " を除き、E AS例外:
     '' ' 例外親がすべての例外をキャッチすることができます' '' 
    印刷(E)
E変数は、Exception型のサポート__str __()メソッドのインスタンスであります直接印刷。
無効なリテラルについて:10ベース付)(int型' X ' 
のtry 
    int型(" X " を除き、E AS例外:
     '' ' 例外親がすべての例外をキャッチすることができます' '' 
    印刷(e.args)
E変数属性は、それがタプルのエラーメッセージで、.argsです。

( "ベース10と)(int型のリテラル無効: 'X'"は、)してみてください:eとValueErrorを除い日時(2017,2,30):プリント(e)の日はmonthtryの範囲外である:日時(22017,2 、eとValueErrorを除く30):プリント(e)の年間22017はrangetryの外にある:eとValueErrorを除い日時(2017,22,30):プリント(e)の月は1..12e = Nonetryでなければなりません:日時(2017 、22,30)とValueErrorを除くeと:印刷(e)の月は1..12eでなければなりません
#電子这个变量在异常过程结束后即被释放、再调用也无效
 <ファイル」:トレースバック(最新の呼び出しの最後) <モジュール> NameErrorで入力>」、行1、:名'e'が定義されていません

errarg =なし
試み:
    日時(2017,22,30)
:errargとしてValueErrorを除いて
    印刷(errarg)
    
月が1..12でなければなりません
errarg
トレースバック(最新の呼び出しの最後):
  ファイル"<モジュール>に<入力>」、行1、
NameError:名'errargは'が定義されていない
試して:
    日時(2017,22,30)
errargとしてValueErrorを除い:
    プリント(errarg.args)

#ValueError.args返回元组

( '月が1..12でなければなりません')
メッセージ=なし
試み:
    日時(2017,22,30)
errargとしてValueErrorを除い:
    プリント(errarg.args)
    メッセージ= errarg.args
    
( '月が1..12でなければなりません'、)
メッセージ
( '月は1でなければなりません..12' 、)
してみてください:
    日時(2017,22,30)
errargとしてValueErrorを除い:
    プリント(errarg.args)
    メッセージ= errarg
    
( '月が1..12でなければなりません'、)
メッセージ
とValueError( '月がなければなりません1..12'で、)
STR(メッセージ)
「月は1..12でなければなりません」

異常情報プロンプトに応じて異常情報の分析、および対応する処理を行います。

試す
    Y = 2017 
    、M = 22 
    、D = 30 
    日時(Y、M、D)
を除くとValueError errargとして:
     プリント(errarg.args)
    メッセージ = errarg 
    M = re.search(U " " 、STR(メッセージ))
     場合M:
        DT =日時(Y、1 、D) 
        ' 月が1..12でなければなりません' 
DT 
datetime.datetimeの( 2017、1、30、0、0)

それでも再帰呼び出しを除きます:

デフvalidatedate(Y、MO、D):
    DT = なし
     試み
        DT = 日時(Y、MO、D)
     を除くとValueError Eとして:
         プリント(e.args)
         プリント(STR(Y)+ STR(MO)+ STR( D))
        メッセージ = Eの
        MA = re.search(U " ^(年)|(月)|(日)" 、STR(メッセージ))
        YMD =のma.groups()
         場合YMD [0]:
            DT = validatedate( 。datetime.now()年、MO、d)の
         場合 YMD [1 ]:
            DT = validatedate(Y、datetime.now()月、D。)
         場合 YMD [2 ]:
            DT = validatedate(Y、MO、datetime.now()日。)
     最後に戻りDT 
    
validatedateを( 20199、16、33 ' 年間20199が範囲外である' 、)
 201991633 ' 月が1..12でなければなりません' 、)
 20181633 ' 日が月の範囲外である' 、)
 2018433 
datetime.datetimeの( 2018、4、20、0 、0)

 

おすすめ

転載: www.cnblogs.com/wpcnblog/p/11356475.html