선형 자료구조 한번 씩 다 구현해본다음에
응용을 해보려고 문제를 풀고있어요.
지금은 스택을 하고있는데 infix notation을 입력받아서 계산하는 단순한 계산기를 작성하고 있어요.
지금은 괄호가 잘 맞는지 검사하고 참 거짓을 반환하는 isBracketMatching() 메소드랑
infix notation을 postfix로 바꾸고 그 값을 String으로 반환하는 convertToPostfix() 메소드,
postfix값을 계산하고 그 값을 int로 반환하는 calculate() 메소드까지 만들었어요.
대충 이렇게 작동하게 만들었어요.
그런데 제가 설계할 때 convertToPostfix가 true인 precondition이 만족되었을 때만 calculate 메소드를 호출하는 걸로 가정하고
int로만 계산해서 /나 % 연산 시 값의 손실이 일어나는 부분이랑, infix notation에 10진수 단일 operand만 받는 상황만 가정했어요..
즉, 33 + 4 를 해버리면 isBracketMatching에서 true가 반환되고,
convertToPostfix를 하면 334+ 가 되고, 계산한 값은 7이 반환되는 끔찍한 예외가 나와요..
이런 부분에 대한 예외처리를 try{ } catch{ }로 진행하는게 맞을까요, 아니면 주석에 이런 부분은 명시해두고 그냥 냅두는게 나을까요..?
또, C언어라면 if ( ?? == null ) 등, null값이 들어있는 경우에 대한 처리를 적어서 예외처리를 해왔는데
자바에서도 마찬가지로 pop, peek 연산 시 null일 경우 try catch로 그 상황을 처리해줘야 하는건가요..?
unchecked Exception은 그냥 내버려 두는 상황이 대부분이라고 들었는데
다른 클래스나 메소드에서 사용할 때 pop peek를 사용하여 NullPointerException이 발생하면 그냥 printStackTrace가 나오도록 지켜봐야하나요..?
선배님들의 자문을 묻습니다 프린이를 살려주세요
댓글 0