선형 자료구조 한번 씩 다 구현해본다음에


응용을 해보려고 문제를 풀고있어요.


지금은 스택을 하고있는데 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가 나오도록 지켜봐야하나요..?



선배님들의 자문을 묻습니다 프린이를 살려주세요