[python]例外処理
📌 例外処理
📌 エラー例外処理技術
-tryドア以外は
[]
符号が存在し、カッコ内の内容を省略できることを示す慣例記号である.try:
...
except [발생 오류[as 오류 메시지 변수]]:
...
1)try、書き込みのみを除くtry:
...
except:
...
2)エラーが発生した例外文を含むtry:
...
except 발생오류:
...
エラーが発生した場合は、文で予め定義された「oh」名と一致した場合にのみブロックが実行されることを示します.3)エラーとエラーメッセージ変数を含む異常文
try:
...
except 발생 오류 as 오류 메시지 변수:
...
#예시
try:
4 / 0
except ZeroDivisionError as e:
print(e) #오류가 발생하면 변수(e)에 담기는 오류메세지를 출력하라. division by zero출력 됨
АААААААААААААААА\-try,finally文
f = open('foo.txt', 'w')
try:
# 무언가를 수행한다.
finally: # 항상 수행
f.close()
「foo.txt」ファイルを書き込みモードで開くと、例外が発生するかどうかにかかわらずfinallyセクションで開いているファイル|4|を閉じることができます.-複数のエラーの処理
try:
...
except 발생 오류1:
...
except 발생 오류2:
...
# 예시 1
try:
a = [1,2]
print(a[3]) #2개임 인덱싱 오류
4/0 # 위에서 이미 오휴가 발생해서 오류 발생 X
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
except IndexError:
print("인덱싱 할 수 없습니다.")
#예시 2
try:
a = [1,2]
print(a[3])
4/0
except ZeroDivisionError as e:
print(e)
except IndexError as e:
print(e) # list index out of range 출력
#예시 3
try:
a = [1,2]
print(a[3])
4/0
except (ZeroDivisionError, IndexError) as e: #예시2(2개이상의 오류)를 묶어서 처리 가능
print(e) # list index out of range 출력
-try,else moon
try:
...
except [발생 오류[as 오류 메시지 변수]]:
...
else: # 오류가 없을 경우에만 수행된다.
...
try:
age=int(input('나이를 입력하세요: '))
except: # 숫자가 아닌 값
print('입력이 정확하지 않습니다.')
else: # 숫자, 오류가 없을때만 수행된다.
if age <= 18:
print('미성년자는 출입금지입니다.')
else:
print('환영합니다.')
📌 エラーを避ける
try:
f = open("나없는파일", 'r') # 파일없음
except FileNotFoundError:
pass
ファイルがないのでFileNotFoundError:エラーを表示するはずですが、passを使用してエラーを回避しました.📌 わざとまちがいを犯す
f.close()
コマンドを使用して強制実行エラーclass Bird:
def fly(self):
raise NotImplementedError
# bird클래스를 상속받는 자식 클래스는 반드시 fly함수를 구현해야한다는 의지를 보여줌.
# 만약 자식 클래스가 fly함수를 구현하지 않은 상태로 fly함수를 호출한다면 어떻게 될까?
class Eagle(Bird): # bird클래스를 상속받음.
pass # 그러나 fly함수를 구현하지 않았음.
#실행
eagle = Eagle()
eagle.fly()
АЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙ\1049class Bird:
def fly(self):
raise NotImplementedError
#오류를 발생시키지 않으려면 eagle클래스에 fly함수를 반드시 구현해야함.
class Eagle(Bird): # bird클래스를 상속받음.
def fly(self): #fly함수 구현
print("very fast")
#실행
eagle = Eagle()
eagle.fly()
逆にfly関数を実装すると、「非常に速い」文が正常に出力されます.📌 例外の作成
raise
クラスを継承して作成できます.class MyError(Exception):
pass
def say_nick(nick):
if nick == '바보':
raise MyError() #바보면 에러
print(nick)
#실행
say_nick("천사")
say_nick("바보")
#결과
천사
Traceback (most recent call last):
File "/Users/princesong/Desktop/Algorithm/python/p.py", line 10, in <module>
say_nick("바보")
File "/Users/princesong/Desktop/Algorithm/python/p.py", line 6, in say_nick
raise MyError()
__main__.MyError
このプログラムを実行すると、「エンジェル」が正常に出力されるとMyerrorが表示されます.#예외처리기법 사용
try:
say_nick("천사")
say_nick("바보")
except MyError: #에러가 발생하면 출력
print("허용되지 않는 별명입니다.")
#결과 - 정상 출력
천사
허용되지 않는 별명입니다.
この場合、例外処理プロセスを使用して通常の出力を行うことができます.# 오류 메시지를 표현하고 싶을때는,
try:
say_nick("천사")
say_nick("바보")
except MyError as e:
print(e)
#결과
오류 메세지 출력 X
実行時にエラー・メッセージは出力されません.エラーメッセージを出力するときにエラーメッセージを表示するには、NotImplementedError
メソッドをエラークラスに実装する必要があります.Exception
メソッドはprint(e)と同様に、エラーメッセージの印刷出力時に呼び出されるメソッドである.class MyError(Exception):
def __str__(self): # 위 코드에서 메서드만 추가함.
return "허용되지 않는 별명입니다."
def say_nick(nick):
if nick == '바보':
raise MyError()
print(nick)
try:
say_nick("천사")
say_nick("바보")
except MyError as e:
print(e)
#결과
천사
허용되지 않는 별명입니다.
Reference
この問題について([python]例外処理), 我々は、より多くの情報をここで見つけました https://velog.io/@byhazy/Python-예외-처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol