-
Try / CatchLang/Lang 2022. 6. 4. 21:09
===
===
Exception Handling
예외처리는 개발자의 숙명
회원가입을 시도할 때알아서 잘 좀 해주면 좋은데
비밀번호를 안 넣던지,
비 도덕적인 id를 넣는다든지
아랍어를 넣는다든지
회원가입 서버와 대화를 시도한다든지
별 상황이 다 일어남
일어날 수 있는 모든 최악의 상황을 떠올리고 다 대처할 준비가 돼 있어야 한다
===
초록색 버튼을 누르면 go회원가입() 함수가 실행되는데
C언어는 그거 들어가기전에 if else로 사전처리를 한다
모든상황을 하나씩 커버해주는 방법으로 예외처리
그 이후의 JAVA, Python, C++은 if else는 있지만 try / catch가 새롭게 예외처리 방법으로 등장함
아무리 if else를 해도 창의적인 유저들을 이길 수가 없었던 것
===
C언어에서, 갖은 if else를 뚫어내고 go회원가입()까지 가면
에러가 생기고,
C언어는 유서 한장 남기고 사망한다
근데 try / catch는 민감한 부분을 try로 감싸
에러가 나면 유서가 나오는건 똑같은데, try catch가 있으면 유서를 읽는다. 다시 살릴 수 있어
===
회원가입페이지가 정상적으로 돌아간다는건 : '이상한 걸 치면 다시 시도할 수 있게 돌려보내는게 정상적인 동작'
C언어는 if else를 계속 보강해서 안죽게 미리 보강하는 수밖에
try catch는 일단 예외가 날 수 있는 부분을 try로 감싸고, 거기서 에러가 나면 메시지를 분석해서
(메시지에 에러 A, 에러 B 이런식으로 써있는데)
에러 A면 catch 에러A 가 내 에러군 하면서 거기에 있는게 동작
에러 B도 마찬가지...
finally { } 얘는 다 하고 무조건 실행
에러를 보고 개발자가 다시 살리기로 하면 다시 회원가입이 동작하게 할 수도 있고, 아니면 프로그램을 끝낼 수도 있고
===
try를 하고 catch에 걸리고 finally로 갈 수 있고
try를 하고 catch에 안걸리고 finally로 갈 수도 있고
===
프로그램이 죽은 이후(try에서 에러가 나는 것)에도 처리를 해줄 수 있다, 프로그램을 살려낼 수도 있는게 try catch
===
if else잘 막는게 맞지 않아? 에 대한 try / catch측의 답변
Exception e 라는애가 모든 종류의 에러를 다 잡는다, 거기에 스택 trace()로 어떤 에러가 났나 한번 봐보자 할 수 있어
스택trace를 하면
이렇게 어디 몇번째 줄에 이런게 나왔다 뜸
===
엄청 큰 프로그램일 때, 한줄에서만 에러날 때 거기에 try를 쓰면 프로그램이 꺼지진 않고 그냥 넘겨버릴 수 있음(과제제출용)
===
속도 때문에 쓴다는 사람도 있다
if else는 저거 다 하고 실행하는데,
try catch는 일단 하고 본다. 그 후에 에러가 없으면 땡큐, 있으면 그때 처리
프로그램의 안정성 보다는 속도에 비중을 두는 것
===
다른 외부 DB나 외부 서버 등 모듈간에 통신을 할 때
거기로 요청을 보냈는데 거기 문제로 에러가 뜬 거면
에러를 받더라도 내 프로그램이 죽지 말고 몇 초 뒤에 다시 시도한다든지 쓰여야 한다
===
예외처리나 디버깅을 하는 용도로 if else나 try/catch가 쓰인다
if else : 이 조건을 통과한 뒤 실행
try/catch : 일단 실행하고 catch에서 에러가 발생하길 기다리고 처리, finally에서 다시 살리거나 등
상황마다 더 자연스러운 예외처리 방법이 있다
'Lang > Lang' 카테고리의 다른 글
0.1 + 1.1 == 1.2 ? (0) 2022.08.14 vscode 엘리 : Shortcuts, Extension (0) 2021.12.05 vscode 코딩애플 (0) 2021.12.01 vscode 생활코딩 (0) 2021.12.01 compliation & interpretation (0) 2021.11.09