본문 바로가기

Homo Coding15

런타임 계열 예외와 checked 예외 자바에서 예외(Exception)은 크게 checked 예외와 unchecked 예외로 나뉘어진다. checked 예외는 코드에서 명시적으로 try-catch-finally 예외 처리를 해야하는 것을 의미하며, unchecked 예외는 그럴 필요가 없는 것을 의미한다. checked 예외에서 try-catch로 예외를 처리하지 않는 경우에는 메소드에 throws 절을 추가해야 한다. 자바에서 checked 예외는 java.lang.Exception 을 상속받는 형태이며, unchecked 예외는 java.lang.RuntimeException을 상속받는 예외이다. checked 예외이든 unchecked 예외이든 두가지 모두 동일한 기능을 수행한다. 따라서, 어느 것이 더 낫다라고 말할 수는 없다. 하지.. 2011. 5. 7.
예외에 대한 비용 아래 내용은 http://blog.dynatrace.com/2011/04/12/the-cost-of-an-exception/ 를 번역한 부분입니다. 최근에 예외 비용에 대해서 dynaTrace에서 더 많은 토론이 있었다. 고객과 같이 일할 때 고객이 알지 못하는 많은 예외들을 매우 자주 발견하곤 한다. 이러한 예외를 없앤 후에, 코드는 이전 보다 상당히 더 빨라진다. 이는 코드에서 예외를 사용하는 것은 심각한 성능 오버헤드를 가지고 온다는 가정을 만든다. 아마도 예외를 사용하는 것을 피하는 것이 더 낫다라고 생각할 수도 있다. 예외가 에러 상황을 처리하는데 중요한 뼈대를 이루기 때문에 예외를 피하는 것은 좋은 방법이 아닌 것처럼 보인다. 무엇보다도 이는 예외를 던지는 비용에 대해서 더 자세히 들여달 볼 .. 2011. 4. 28.
Antlr 을 활용한 복잡한 문자열 파싱 일반적으로 문장(sentence)은 여러 개의 단어(word)들로 구성된다. 또한, 단어의 순서를 조합함으로써 서로 다른 의미의 문장을 표현하게 된다. 이러한 문장을 읽어들여서 해당 의미를 인식하려면 최소한 문장을 구성하는 구조에 대해서 이해하고, 그 구조 안에 있는 단어들이 어떠한 의미로 사용되는지를 파악해야 한다. 단순한 문장의 경우, 일반적으로 문자열로 읽어들여서 하나의 구조에 맞는지를 검사하여 해당 단위 요소로 분해하여 이를 의미를 부여하면 된다. 예를 들어, SQL 구문의 경우 "SELECT column1, column2 FROM table_name"과 같은 문장은 SELECT, FROM과 같은 키워드를 중심으로 그 안에 어떤 정보가 들어가는지를 정해서 해당 문장을 읽어들여 테이블명과 컬럼명을 .. 2011. 4. 16.
비즈니스 로직의 거대화와 테스트 방법의 변화 IT의 사용이 증가하면서 그 넓이(오프라인 업무의 온라인 업무화) 뿐만 아니라, 그 깊이(다양한 유형의 온라인 업무화)까지도 상당한 영역까지 구현의 범위가 넓어지고 있습니다. 따라서, 시스템의 구현에 대한 테스트는 그 입력과 예상되는 출력의 검증 뿐만 아니라, 다양한 경우의 조합(다양한 입력 변수들)을 통한 테스트가 비즈니스적으로 예상하는 형태로 결과값이 얻어지는지에 대한 테스트도 상당히 중요해지는 것 같습니다. 예를 들어, 금융권의 상품들은 다양한 옵션들이 추가되면서 다양한 상품들이 나타나고, 이에 대한 수익율이나 이자율, 환급율과 같은 결과치들이 상품으로써 팔릴 만한 가치인가를 결정하려고 하는 요구들이 강하게 나타나며, 특히, 파생상품의 경우들은 그 결과를 허용오차 범위 내에서 미리 예상할 수 있는 .. 2010. 11. 26.
반응형