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)