기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 try-except-else-finally 구문 완전 정복

파이썬 try-except-else-finally 구문 완전 정복 🛡️

파이썬의 try-except 구문은 에러를 잡을 때 필수적입니다. 하지만 여기에 elsefinally를 함께 사용하면 정상 처리와 리소스 정리까지 깔끔하게 다룰 수 있어요!

Python error handling icon

✅ 기본 try-except 사용

에러가 발생했을 때, except 블록으로 안전하게 넘어갑니다.

# 기본 try-except
try:
    result = 10 / 0
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

✅ try-except-else 사용

예외가 발생하지 않은 경우에만 else 블록을 실행합니다.

# try-except-else
try:
    result = 10 / 2
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")
else:
    print("정상적으로 계산되었습니다:", result)

✅ try-except-finally 사용

에러 발생 여부와 상관없이 finally 블록은 항상 실행됩니다. 주로 리소스 정리(cleanup)에 사용합니다.

# try-except-finally
try:
    file = open('sample.txt', 'r')
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
else:
    content = file.read()
    print(content)
finally:
    print("파일 닫기 시도")
    try:
        file.close()
    except:
        pass

try-except-else-finally 구조를 적절히 활용하면 코드의 안정성과 가독성을 모두 높일 수 있습니다. 특히 파일 열기, 데이터베이스 연결, 네트워크 통신 등에서는 필수예요!

에러를 잘 다루는 개발자가 진짜 프로다. try-except-else-finally를 자유자재로 다루는 순간, 당신의 코드 품질이 달라진다. 🚀

Icons by Flaticon

댓글

가장 많이 본 글

Icons by Flaticon