본문 바로가기
[기록] 211222 1. 예외 예외처리 : 프로그램 실행 시 발생할 수 있는 예외에 대비하는 것으로 프로그램 비정상종료를 막고 실행 상태를 유지하는 것. 에러(error) : 발생 시 수습할 수 없는 심각한 오류. (컴파일에러, 런타임에러 등) 예외(exception) : 예외 처리를 통해 수습할 수 있는 덜 심각한 오류. (예외에는 크게 Error(java.lang.Error), Exception(java.lang.Exception)과 체크예외, RuntimeException과 언체크/런타임 예외 가 있다.) 2. Checked Exception & UnChecked Exception . *간단하게 RuntimeException을 상속하지 않는 클래스는 Checked Exception, 반대로 상속한 클래스는 Unchec.. 2021. 12. 26.
실패원자성과 동시성 오류 관련 실패원자성은 권장되지만 항상 만족할 수는 없는데 그 경우 중 두 스레드가 동기화 없이 같은 객체를 동시에 수정할 때 발생하는 동시성 오류에 관하여. 여기서 의문점은 이 때 실패원자성을 만족하지 않으면 더 심각해지지 않느냐이다. 동시성 오류는 일반적으로 예외를 잡더라도 객체를 재사용하기 어렵다고 하는데.. 좀 더 정확하게 찾아보고 관련 내용 추가하도록 하겠습니다. 2021. 12. 22.
Checked Exception과 Unchecked Exception의 Rollback 관련 Checked Exception과 Unchecked Exception의 Rollback 차이점 현재 알고 있는 내용 : Checked Exception는 Rollback이 되지않고, Unchecked Exception은 Rollback이 된다. 하지만 Checked Exception과 Unchcked Exception의 Rollback이 되고 안되고의 문제는 단정지을수 없다고 한다. 2021. 12. 22.
[4장] 예외 4장에서는 JdbcTemplate을 대표로 하는 스프링의 데이터 액세스 기능에 담겨 있는 예외처리와 관련된 접근 방법에 대해 알아본다. 이를 통해 예외를 처리하는 베스트 프랙티스도 살펴본다. 1. 사라진 SQLException 3장에서 JdbcTemplate으로 바꾸고 나서 throws SQLException이 사라졌다. 먼저 개발자들의 코드에서 종종 발견되는 초난감 예외처리의 대표선수들을 살펴보자. 예외 블랙홀 try/catch 블록 중 catch로 예외를 잡고 아무것도 하지 않는 경우. 조치를 취할 방법이 없다면 굳이 예외를 잡지 말고 메소드에 throws SQLException을 선언해 자신을 호출한 코드에 예외처리 책임을 전가하자. 무의미하고 무책임한 throws 모든 메소드에 기계적으로 예외를 .. 2021. 12. 21.
[기록] 211215 1. JUnit의 동작 방식 JUnit에는 생명주기가 있다. @BeforeClass부터 @AfterClass까지 정해진 순서를 따른다. 동일한 어노테이션이 반복된다면, 그들간의 순서는 보장받지 못한다. 이것은 각 테스트가 최소 단위로 진행된다는 것을 전제하기 때문이다. 테스트 클래스에서 @Test가 붙은 public이고 void형이며 파라미터가 없는 테스트 메소드를 모두 찾는다. 테스트 클래스의 오브젝트를 하나 만든다. @Before가 붙은 메소드가 있으면 실행한다. @Test가 붙은 메소드를 하나 호출하고 테스트 결과를 저장해둔다. @After가 붙은 메소드가 있으면 실행한다. 나머지 테스트 메소드에 대해 2~5번 을 반복한다. 모든 테스트의 결과를 종합해서 돌려준다. 추가로 @BeforeClass와 .. 2021. 12. 18.
[3장] 템플릿 3장 템플릿 1. 다시 보는 초난감 DAO 🤷‍♂️ 템플릿이란 ? 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법이다. 예외처리 기능을 갖춘 UserDao의 deleteAll() 메소드 public class UserDao { private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void deleteAll() throws SQLException { Connection c = null; Prepar.. 2021. 12. 17.