ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Try / Catch
    Lang/Lang 2022. 6. 4. 21:09

    ===

    https://youtu.be/ym8zJk81WCg

     

    ===

    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
Designed by Tistory.