Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/유니티C#

unity c#) try-catch 문.

UniCoti(유니코티) 2023. 12. 17.

정말 부끄럽지만 유니티를 3년간 다루며 처음으로 try-catch문에 대해 알게 되었다.

가장 기본적으로, 이건 예외처리를 위해서 존재하는 기능이다.

try-catch문은 try {}와 catch (){} 부분으로 나눠지는데,

 

try부분에 실행할 코드를 넣고, catch부분에는 조건의 오류를 소괄호 안에 넣은 다음

그 오류가 일어나면 catch안의 코드를 실행하는 식이다.

 

솔직히 말로만 설명하면 이해가 잘 되지 않을 것이다. (나도 그랬다)


1. 예시.

try {
    text.text = dt.Compute(inputField.text, "").ToString();
} catch (SyntaxErrorException) {
    text.text = "not a math expression";
} catch (NullReferenceException) {
    text.text = "not a math expression";
} catch (EvaluateException) {
    text.text = "not a math expression";
}

이건 내가 try-catch문을 처음으로 써보게 된 예제이다.

 

dt.Compute("문자열", "").ToString();은 문자열로 된 식을 계산하고

다시 문자로 변환해 준다는 의미를 가진다.

 

문제는, "문자열" 부분에 식이 아닌 값이 들어가면 오류가 난다는 것이다.

내가 "5(5)"를 넣었을 때는 SyntaxErrorException이 나왔고,

""을 넣었을 때는 NullReferenceException이 나왔다.

또한 영어를 넣었을 때는 EvaluateException이라는 에러가 나왔다.

 

따라서 위의 문자열로 된 식을 계산하는 코드를 try에 넣고,

catch로 앞서 소개한 3가지 오류를 잡아서, 오류를 잡으면 "수식이 아닙니다"를

출력하도록 코드를 구성할 수 있었다.


여기까지 간단하게 try-catch문을 알아봤는데, 예전에 공식 계산기를 만들 때도

같은 오류가 있었지만 끝내 해결하지 못했었다. 굉장히 늦은 시기에 알게 된 기능이지만

이번에라도 알게 되어 발전했다는 사실이 기쁘다. 앞으로 자주 사용할 것 같다.

 

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com



이상으로 도움이 되었길 바라며,

 

끝.

댓글

💲 추천 글