는 프로그램이 명확성을 위해 약간의 흐름과 프로그램이 상당한 방법으로 실패한 경우에 대한 예외 핸들러를 저장하려고 변경하고 사용자에게 경고 또는 완전히 프로그램의 흐름 (예외 조건)을 변경해야
. 시스템에 문제가 발생했을 때 예외 인 경우 을 수정하면을 수정할 수 없습니다.
비행기에서 뛰어 내리는 경우 가장 먼저 알아야 할 것은 사용할 수있는 낙하산이 없다는 것입니다. 따라서 os.path.exists()
을 사용하여 예외를 처리 할 때 경로가 유효한지 여부를 알려줍니다. 가장 안전한 기본값은 현재 디렉토리이며 .
을 경로로 사용하여 액세스 할 수 있습니다. 그러나 그렇지 않다면 코드가 충돌하고 레코딩해야 할 경우에 대비하여 사용자 디렉토리가 이미 존재한다고 가정 할 수 있어야합니다. mkdir
전에 예외를 처리해야합니다.
또한 파이썬에서 올바르게 들여 쓰기를해야합니다. 간격은 오류를 잡는 데 도움이 될 수 있으므로 코드를 읽기 쉽게 만들 때 줄 바꿈을 사용하는 것을 두려워하지 마십시오. 예외 핸들러의 고장이 일어날 허용되어서는 안
try:
# simplify the if statement to stop repeating yourself
if not os.path.exists(project_dir):
os.makedirs(project_dir)
file_location = project_dir
except OSError as exc:
if exc.errno != errno.EEXIST:
raise # reraise the current exception
if os.path.exists(user_dir):
file_location = user_dir
else: # FUBAR. Sound sirens immediately and try everything to keep the file somewhere in memory before failing.
print("[ERROR] {} was inaccessible.\nWhile attempting to recover, {} did not exist so files could not be backed up."
.format(project_dir, user_dir))
raise
: 귀하의 try
절은 별도의 들여 쓰기 수준을 필요로한다. 그것은 대격변의 사건이며 데스크탑에 충돌하는 유일한 옵션이 남아 있어야합니다. 하나의 예외를 잡아서 복구 할 수 있습니다. 2 ~ 3 개의 중첩 예외는 컴퓨터가 지각력을 얻었으며 디지털 족쇄를 뒤집을 수 있다는 것을 의미합니다 (또는 예외를 처리하는 이유에 대해 열심히 생각해야 함).
사용중인 실제 들여 쓰기를 반영하도록 코드를 게시하십시오. – patrick
StackOverflow에 오신 것을 환영합니다. 도움말 설명서의 게시 지침을 읽고 따르십시오. [최소한의 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)가 여기에 적용됩니다. MCVE 코드를 게시하고 문제를 정확하게 설명하기 전까지는 효과적으로 도움을 드릴 수 없습니다. 게시 된 코드를 텍스트 파일에 붙여넣고 설명한 문제를 재현 할 수 있어야합니다. – Prune
감사합니다, 패트릭이 게시물을 빨려 내 시도는 빠져 나올 것이다! –