2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[Swift-TIL] 예외처리 - 만약 에러가 발생한다면.. (이론편)

2024. 11. 5. 02:33ㆍIOS/Swift-TIL
SMALL

만약 에러가 발생한다면,

어떻게 처리를 해야할까?

한번쯤은 생각해보아야할 난제이다.

 

예외처리 말그대로 예외를

처리한다는 의미가 되겠다.

 

쉽게 이야기해서

우리가 원하지 않는 케이스를

처리한다는 말이 된다.

 

그 말인 즉,

정상적으로 돌아가지 않은 결과물을

미리미리 대비를 해 놓는 것이고,

결국은 에러인데 이 에러가 나지 않게

안전핀을 박아서 문제가 생기지 않도록

만드는 게 예외처리인 것이다.

 

에러처리, 예외처리

반드시 해줘야하는 것인데,

당연하게도 잠정적으로

문제가 될만한 상황이 있으면,

그 상황이 벌어지지 않아도록

처리를 해주는게 좋다.

 

혹은,

그 상황이 터졌다면,

그 상황이 일어났다라는 걸

알수있도록 표시를 해주어야

한다는 것이다.

 

이러한 예외처리는

어떻게 처리를 하는가?

 

이게 이 글의 포인트이다.

많은 주니어 개발자분들이

간과하고 넘어가버리기 쉽상인데,

왜 그런가 하냐면,

그것이 예외인것인줄 조차

몰라서 그런 부분도 있고,

당연하게도 일어나지 않을 것이라고

자신하기 때문이다.

게다가

그렇게 예외가 일어날 확률도 적기 때문에

안해도줘 된다라는 안일한 마음 때문이다.

 

자동차로 비유하자면,

사고는 눈깜빡할 새에 일어나는데,

이도 그렇다..

언제 일어날 줄 모르는 사태에

미리 대비해놓게 SOS 기능이나,

앞차 출발시 알림이라던가

요즘엔 이런 기능들을 다 달아준다.

이것들이 다 사고유발을 줄이기 위해서

그리고 대비하기 위해서 있는 기능들이다.

 

이처럼 앱을 개발할때에도 마찬가지로

예외처리는 선택이 아닌 필수라는 점이다.

중요한건 습관을 들여 놓는게 맞다고 한다.

 

에러가 생길 수 있는 예제코드를 본다면,

totalNumber / inputNumber

음.. 굉장히 심플해보인다.

int인 변수가 2개 있는데,

"totalNumber"나누기 "inputNumber"인데,

얘는 애러가 생길 수 있다.

"언제? 어느 케이스에서 에러가 생길 수 있는가?"

 

음.. 아무리 생각해도

에러가 잘 안날거라고 생각한다.

 

그래서 예외처리를 하고 싶어도

할수가 없을 것 같다는 것이다.

 

여기서의 예외의 케이스는 "0"이다.

 

"inputNumber"가 0이라면,

"0"으로 나눌 수가 없다.

어떤 숫자가 되던 "0"으로는

나눌 수가 없다.

 

그렇기 때문에

"0"으로 나누는 것을

막아줘야 한다.

 

결국 "0"으로 나누는걸 막아주는게

에러를 처리해 주는게 된다.

 

가장 간단한 방법은

if문으로 막아버리면 된다.

if inputNumber != 0 {
	totalNumbel / inputNumber
}

inputNumber가 0이 아닐 때 나눠라.

굉장히 심플하고 좋다.

 

문제가 해결된 것처럼 보일 수 있지만,

이것 말고도 지원을 해주는 게 있다.

예외를 던져주는 throw 케이스가 있다.

 

만약에 0으로 나눴다면,

throw 던져달라,

나눈 것을 던져 달라는게 된다.

 

나눈곳

do {
 try devideByinputNumber(input)
} catch {
 print(Error)
}

즉, 얘는

어떠한 함수 안에 있는 코드였으며,

어떠한 곳에서 do 해서

이러한 함수를 실행을 한다면,

위쪽 함수에서 던진다(throw).

 

물론 저렇게 나눈걸 던지진 않고,

에러를 던져주고 걔를 받아서(catch)

출력을 해준다. 혹은 에러를 처리해준다.

이렇게 정리해 볼 수 있다.

그러면 실습편으로 넘어가보도록 하자.

728x90