본문 바로가기

JAVA/Java2021-3

(25)
오류의 로그를 남기자!! java.util.logging.Logger 활용(생긴 로그 파일 기록이 안남았음 해결 필요) Logging? - 시스템 운영에 대한 기록(오류가 발생 했을 때, 그 오류에 대한 기록을 남겨 디버깅을 용이하게 함) - 로그 파일에 기록하는 코들르 추가하여 필요한 정보가 로그로 남을 수 있도록 한다. - 디버깅, 시스템 에러 추적, 성능, 문제점 향상을 위해 사용된다. - 어느정도까지 로그를 남길 것인가? (너무 적은 로그 : 정확한 시스템 상황을 파악하기 어려움, 너무 많은 로그 : 빈번한 file I/O의 오버헤드와 로그 파일 백업 문제) java.util.logging (나중에 오픈소스 log4j 이용) - 자바에서 기본적으로 제공되는 log package - 파일이나 콘솔에 로그 내용을 출력할 수 있다. - jre/lib/logging.properties 파일을 편집하여 로그의 출력방식 로그..
사용자 정의 예외 클래스 자바에서 제공하고 있지 않은 예외처리를 만들기 비밀번호 예제) package Basic_Grammar.chap6.ch05UserException; public class PasswordTest { private String password; public String getPassword() { return password; } public void setPassword(String password) throws PasswordException{ if(password==null){ throw new PasswordException("비밀번호는 null 일 수 없다."); }else if(password.length()
메서드를 호출하는 쪽으로 예외처리 미루기 throws 메서드에서 예외처리를 해놓으면 좋을 경우가 있고 메서드를 호출한 곳에서 예외처리를 하면 좋은 경우가 있다. main()메서드에서도 throws를 하면 VM에서 처리하는 것이기 때문에 예외처리를 안하는 것과 같다. package Basic_Grammar.chap6.ch04Exception; import java.io.FileInputStream; import java.io.FileNotFoundException; public class ThrowsException { public Class loadClass(String fileName, String className) throws ClassNotFoundException, FileNotFoundException { FileInputStream fis=ne..
예외처리 handling2 (try ~catch~finally 문, try-with-resources) finally를 수행될 필요가 있는 경우 : 시스템 리소스(파일, 네트워크)를 사용할 때, 이 리소스를 open하고 사용한다. 시스템에서 사용할 수 있는 소켓의 수가 한정적이므로 이 리소스를 다 쓰고나서 close()를 해줘야하는데, 이러한 처리를 finally에서 처리(try catch문에서 finally는 무조건 실행 되는 구문) return;이 있어도 finally는 실행이 된다. package Basic_Grammar.chap6.ch04Exception; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class FileExceptionHandling { pu..
예외처리 handling1 (try ~catch 문) try 문 사용중에 Exception이 생기면, 비정상 종료를 하지않고 catch문으로 가서 log를 남기고 다음 코드가 실행된다. catch에서 예외를 잡고 주로 log를 남긴다. 실습1)ArrayIndexOutOfBoundsException (기본적인건 try catch 안쓰고도 exception을 찾아 준다) package Basic_Grammar.chap6.ch04Exception; public class ArrayIndexException { public static void main(String[] args) { int[] arr={1,2,3,4,5}; for (int i = 0; i < 5; i++) { System.out.print(arr[i]); } System.out.println();..
오류(error),예외(Exception) 오류 : 컴파일에러, 실행에러 - 컴파일 오류는 프로그램 코드 작성 중 발생하는 문법적 오류 - 실행 오류는 실행 중에 의도하지 않은 동작을 하거나 프로그램이 중지 되는 오류 (실행 오류로 인하여 비정상 종료가 되는 경우 시스템의 심각한 장애를 발생할 수 있음) c언어보다는 java에서 안정성이 더 좋다 예외처리가 필요한 이유 : 안정성!!(에러로 인하여 시스템이 죽으면 안된다) 1. 비정상 종료 2. 오류는 없을 수 없다(버그는 계속 잡아야한다) (운영상에서 돌아가는 시스템에서는 버그가 생길 수 밖에 없다) 3.로그를 잘 남겨서 그 에러 상황에 대한 fix를 위해. (java.util.Logger) 프로그램상에서 exception 처리해야한다. 처리하지 않으면 컴파일 에러 발생. (특히, 파일입출력, ..
스트림 활용 문제 1- 고객 명단 출력 2- 여행의 총 비용 계산 3- 고객 중 20세 이상인 사람의 이름을 정렬하여 출력 Step1. Customer 클래스 만들고 Step2. ArrayList로 관리 package Basic_Grammar.chap6.ch03StreamQuiz; import java.util.ArrayList; import java.util.List; public class CustomerTest { public static void main(String[] args) { List customers=new ArrayList(); Customer lee=new Customer(); lee.setCustomerName("이순신"); lee.setAge(40); lee.setCost(100); Cust..
Stream 에 대해 연산을 직접 구현하는 reduce()메서드 reduce() : 프로그래머가 직접 구현할 수 있다. 방법1. reduce(초기에저장하는값,(인수1,인수2)->{return 설정}) : reduce 메서드의 두번째 매개변수에 람다식으로 정의 Or 방법2. BinaryOperator 메서드를 구현 apply() 메서드 오버라이딩해서 재정의 할 수 있다. 예시> 가장 긴 문자열을 찾기 package Basic_Grammar.chap6.ch03Stream; import java.util.Arrays; import java.util.stream.Stream; public class StringArrayStreamReduceTest { public static void main(String[] args) { String words="안녕하세요~~ Hello ..