예외처리

자바에서 예외처리라고 하면 보통 두가지 방법이 거론된다. try-catch 문으로 감싸주는 방식과 throws 로 던져주는 방식인데, 이번에 새로 배운 사실은 엄밀히 말하자면 throws 는 예외처리가 아니다. 던져주는 곳 중 가장 마지막 장소에서는 어찌됐든 try-catch 문으로 해결해 주어야 하며 이게 이루어 지지 않으면 프로그램이 종료돼 버리는 그런 문제가 발생하는 것. 그래서 예외처리에 좀 더 신중해야 하는 것 같다. 또 throws 는 클래스가 아닌 메서드의 매개변수 뒤에만 던질 수 있다. 

exception 가 모든 예외클래스 중 상위클래스는 맞지만 그 위에는 throwable 이 있고 같은 라인에는 error도 있다. error는 메모리 파괴와도 같은 코드로 고칠 수 없는 문제 들을 담고 있다.

finally 는 예외발생과 상관없이 무조건 실행되는 문장이며 보통 공유 객체 반환을 위해 사용됨. 이는 정말 무조건 실행인데 return 이 상위에 존재하더라도 실행!!!! 


이와 같을 경우 catch 문에 걸려서 return 된다면 try 문장 바깥의 print 문은 실행 안될 수 있지만, finally는 return 아래임에도 불구하고 실행된다.

RunTimeException 같은 경우는 validation check로 미리 예방할 수 있다. 이게 뭐냐면 흔히 하는 nullcheck나 데이터 유효여부 체크를 말하는 것. try-catch문을 처음 봤을 때 조건문과 비슷하다는 생각이 들었는데, 실제로 비슷하게 사용할 수도 있다는 걸 알게 되었다.  


자바 파일 읽어 들이기 

진짜 너무 어려웠다. 기본적으로 파일을 읽고 쓰는 방식에는 stream 과 reader(writer) 방식 두가지가 있는데, 개행을 구분지어서 읽는 방식과 전체내용을 한번에 읽는 방식으로 나뉜다고 보면 된다. 용어적으로 헷갈릴 수 있는것이 위에서 언급한 stream은 메서드형식이고 자바에서 데이터를 주고 받을 때 사용되는 stream은 연속된 바이트의 흐름이다. 이에 대한 질문이 들어오면 딱 이렇게 대답하면 될 듯! 

int i;

while((i = fr.read()) != -1){

System.out.print((char)i);

}

String 

큰 내용없이 구분자를 기준으로 문자열을 나누는 두가지 방법의 차이에 대해서 정리한다. 

//속도에 강점, 빈곳을 그냥 지나침 

StringTokenizer stringTokenizer = new StringTokenizer(case,"-");

//중간부분만 찍어서 가능, 재사용가능, 빈곳까지 하나의요소로 저장 

String[] strings = case.split("-");

즉 알고리즘에는 StringTokenizer가 강점을 가지는 것.

댓글

이 블로그의 인기 게시물

git-receive-pack not permitted on 깃 허브 로그인 관련 문제