(⊙ˍ⊙)❓

💜 오류는 크게 실행 전에 발생하는 '구문 오류(syntax error)'와 실행 후에 발생하는 '예외(exception)'로 구분할 수 있습니당. 이때 예외는 프로그램이 정상적으로 실행되는 것처럼 보이다가 중간에 프로그램을 죽게 만들어 버립니다! 따라서 "예외 처리 (exception handling)"로 예외를 처리해야합니다 ❗

프로그래밍에서 오류(Error)는 크게 두 가지 종류가 있습니당.

  • 프로그램 실행 전에 발생하는 오류
    : 구문 오류(syntax error)
  • 프로그램 실행 중에 발생하는 오류
    : 예외(exception) 또는 런타임 오류(Runtime Error)

구문 오류는 코드가 컴파일되는 과정에서 발견되며, 보통 컴파일러나 인터프리터가 이를 바로 알려줍니다. 이러한 오류는 프로그래머가 코드를 작성하는 중에 발생하며, 코드의 오타, 잘못된 문법 등으로 인해 발생합니다.

반면, 실행 시간 오류는 코드가 실행되는 과정에서 발생합니다. 이러한 오류는 보통 예상치 못한 입력값이나 연산 등으로 인해 발생합니다. 예를 들어, 0으로 나누기 오류(Division by Zero Error), 인덱스 범위 초과(Index Out of Range Error) 등이 있습니다.

예외(Exception)는 오류와는 다른 개념으로, 실행 시간에 예기치 않은 상황이 발생하여 프로그램이 중단되는 것을 말합니다. 예를 들어, 파일을 열고 읽는 도중 파일이 없거나 접근 권한이 없는 경우 등이 있습니다. 이러한 예외 상황은 프로그램에서 적절히 처리되지 않으면 프로그램이 강제 종료될 수 있습니다.

파이썬에서는 예외 처리를 위해 try-except 문을 제공합니다. try 블록 안에는 예외가 발생할 가능성이 있는 코드를 넣고, except 블록 안에는 예외를 처리하는 코드를 넣습니다. 만약 try 블록 안에서 예외가 발생하면, 해당 예외를 처리하기 위해 except 블록이 실행됩니다.

예를 들어, 다음 코드에서는 try 블록 안에서 1/0이라는 연산을 수행하면 ZeroDivisionError 예외가 발생합니다. 이 예외는 except 블록에서 처리되어 프로그램이 강제 종료되지 않습니다.

try:
    result = 1/0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

또한, except 블록에서 예외를 처리한 후에는 finally 블록이 실행됩니다. finally 블록 안에는 예외와 상관없이 반드시 실행되어야 하는 코드를 넣습니다.

try:
    result = 1/0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
finally:
    print("프로그램 종료")

1️⃣ 구문 오류(Syntax error)

구문 오류는 괄호의 개수, 들여쓰기 문제 등으로 인해 프로그램 실행되기도 전에 발생하는 오류입니다.

print("안녕하세요)


2️⃣ 예외(exception) or 런타임 오류(Runtime Error)

실행 중에 발생하는 오류


3️⃣ 예외 처리(exception handling)

  • 조건문을 사용하는 방법 (= 기본 예외 처리)
  • try except 구문을 사용하는 방법

💜 조건문으로 예외 처리하기

user_input_a=input("정수입력>")

if user_input_a.isdigit():
    number_input_a=int(user_input_a)
    
    print("원의 반지름:",number_input_a)
    print("원의 둘레:",number_input_a*3.14*2)
    print("원의 넓이:",number_input_a**2*3.14)
else:
    print("정수를 입력하지 않았습니당~ ")

isdigit()은 문자열이 숫자인지 아닌지를 판별하는 파이썬 내장 함수입니다. 문자열의 모든 문자가 숫자인 경우에만 True를 반환하며, 아니면 False를 반환합니다.isdigit() 함수는 문자열이 숫자로 이루어져 있는지 검사할 때 자주 사용되며, 예를 들어 사용자로부터 입력받은 값이 숫자인지 아닌지를 판별할 때 유용하게 사용할 수 있습니다.

💜 try except 구문을 사용하는 방법
1. try -except

try:
    number_input_a=int(input("정수입력>"))
    print("원의 반지름:",number_input_a)
    print("원의 둘레:",number_input_a*3.14*2)
    print("원의 넓이:",number_input_a**2*3.14)
except:
    print("무언가 잘못되어잇움")
  1. try -except pass
 list_input_a=["23","4","666","감자","쿠키","111"]

list_number=[]
for item in list_input_a:
    try:
        float(item)
        list_number.append(item)
    except:
        pass
    
    
print("{} 내부에 있는 숫자는".format(list_input_a))
print("{} 입니다.".format(list_number))

pass는 파이썬에서 아무런 동작도 하지 않는 구문입니다. 일반적으로 아무런 작업을 하지 않아야 하지만, 문법적으로 구문이 필요하다면 pass 구문을 사용합니다.

try-except 구문에서 pass를 함께 사용하는 경우는, 예외가 발생했을 때 처리해야 할 작업이 없는 경우입니다. 이런 경우 except 블록에서 pass 구문을 사용하여 아무런 작업을 하지 않고 그냥 넘어갈 수 있습니다.

  1. try -except -else
try:
     number_input_a=int(input("정수입력>"))
except:
    print("정수를 입력하지 않았습니다/")
else:
    print("원의 반지름:",number_input_a)
    print("원의 둘레:",number_input_a*3.14*2)
    print("원의 넓이:",number_input_a**2*3.14)

  1. try- except -else -finally
try:
    number_input_a=int(input("정수입력>"))
    print("원의 반지름:",number_input_a)
    print("원의 둘레:",number_input_a*3.14*2)
    print("원의 넓이:",number_input_a**2*3.14)
except :
    print("정수를 입력하지 않앗움")
else: 
    print("예외가 발생하지 않앗움")
finally:
    print("일단 프로그램이 끝낫움")  


4️⃣ close()

closed는 파일 객체의 속성 중 하나로, 파일 객체가 현재 닫혀있는지 여부를 나타냅니다.

파일 객체를 열었다면, 이 파일 객체는 반드시 언젠가는 닫혀야 합니다. 만약 파일 객체가 닫혀있지 않으면, 파일을 계속 사용할 수 없게 됩니다.

closed 속성은 True나 False 값을 가지며, 파일 객체가 닫혀있을 경우 True, 닫혀있지 않을 경우 False를 반환합니다. 파일 객체를 닫을 때는close() 메서드를 호출하여 닫을 수 있으며, 파일 객체를 닫은 후에는 closed 속성 값이 True가 됩니다.

아래는 파일 객체를 생성하고, 파일을 닫은 후 closed 속성 값을 출력하는 예시 코드입니다.

f = open('example.txt', 'r')
# 파일 작업 수행

f.close()
print(f.closed)  # True

파일이 제대로 닫혔는지 확인하기 ❗

try:
    file=open("info,txt","w",encoding="utf-8")
    file.close()
except Exception as e:
    print(e)
    
print("# 파일이 제대로 닫혔는지 확인하기")
print("file.closed:",file.closed)

except Exception as e : 구문은 예외 처리를 위한 파이썬의 문법 중 하나입니다. 이 구문은 try 블록에서 예외가 발생했을 때, 발생한 예외의 종류에 상관없이 모든 예외를 처리합니다.

Exception은 모든 예외의 부모 클래스입니다. 즉, 모든 예외 클래스들은 Exception 클래스를 상속받으므로, except Exception 구문은 모든 예외를 처리할 수 있습니다.

as e는 예외 객체를 변수 e에 할당하는 것을 의미합니다. 이를 통해 예외 객체의 속성을 확인하거나 출력할 수 있습니다. 이를 이용하면 예외 처리 과정에서 발생한 오류를 정확하게 파악하고, 디버깅할 수 있습니다.

💜 항상 켜져 있는 프로그램을 데몬(demon) 또는 서비스(service)라고 부릅니다. 예를들어, 컴퓨터의 성능을 감시하는 프로그램, 파일의 변경을 감시하는 프로그램, 사용자에게 웹 페이지를 제공해 주는 웹 서버 등

0개의 댓글