예외 처리 미루기 Throws (미루다) 를 사용하여 예외처리 미루기 Try{} 블록으로 예외를 처리하지 않고 , 메소드 선언부에 throws 를 추가 한다. 예외가 발생한 메소드에서 예외처리를 하지 않고 이 메소드를 호출한 곳에서 예외 처리를 한다는 의미이다. Main() 에서 throws 를 사용하면 가상 머신에서 처리된다. 이 메소드를 호출하는곳에서 처리 package exception; import java.io.FileInputStream; import java.io.FileNotFoundException; public class ThrowsException { // 예외 처리 미루기 public Class loadClass(String fileName , String className) thr..
전체 글
안녕하세요FileInputStream fis = new FileInputStream("a.txt"); // 파일 읽어오기 없을시 FileNotFoundException 예외처리 Class c = Class.forName(className); 클래스 동적 할당 읽어오기 ClassNotFoundException 예외처리 FileNotFoundException, ClassNotFoundException FileInputStream fis = null; try { fis = new FileInputStream("a.txt"); // 파일을 읽어들인다. // 파일이 없을수 있어서 FileNotFoundException 이 발생 } catch (FileNotFoundException e) { System.out.printl..
예외와 예외 처리 오류란 무엇인가 ? 컴파일 오류 : 프로그램 코드 작성 중 발생하는 (문법적 오류) 실행 오류 : 실행중인 프로그램이 의도하지 않은 동작을 하거나 (bug) 프로그램이 중지 되는 오류(runtime error) 자바는 예외처리를 통하여 프로그그램의 비정상 종료를 막고 log를 남길수 있다. 예외처리에서 중요한건 실행 오류가 있을수있는데 의도치 않게 원치않은 결과 또는 서비스가 죽게되는 경우 – 시스템을 죽지 않게 하는 방법이 중요 로그를 상세하게 남겨서 추후에 버그를 잡을수 있어야 한다. 오류(에러) : 가상머신에서 발생 프로그래머가 처리할수없음, 동적 메모리를 다 사용한 경우 Stack over flow 등 예외(Exception) : 프로그램에서 제어할수 있는 오류 읽으려는 파일이 ..
Reduce() 연산 정의된 연산이 아닌 프로그래머가 직접 지정하는 연산을 적용 최종 연산으로 스트림의 요소를 소모하며 연산 수행 배열의 모든 요소의 합을 구하는 reduce연산 기존의 연산이 아닌 내가 연산을 구현 Arrays.stream(arr).reduce(0,(a,b) -> a+b)); 0은 초기값 문자일시 “” 배열에서는 Arrays 로 스트림을 생성한다. 스트림에 배열 객체를 넣고 reduce() 메소드를 실행 처음값은 초기값을 넣고 그다음 매개변수 2개를 넣는다 연산을 정의한다. package stream; import java.util.Arrays; public class IntArrayTest { public static void main(String[] args) { int [] arr..
스트림(Stream) – 연산기능 자료의 대상과 관계없이 동일한 연산을 수행할 수 있는 기능(자료의 추상화) 배열 ,컬렉션에 동일한 연산이 수행되어 일관성 있는 처리 가능 한번 생성하고 사용한 스트림은 재사용할 수 없다. 스트림 연산은 기존 자료를 변경하지 않는다. 중간 연산과 최종 연산으로 구분된다. 최종 연산이 수행되어야 모든 연산이 적용되는 지연 연산 Stream 객체를 생성하고 배열에 대해서 연산을 할 때 그 배열을 직접 건들이지 않고 다른 메모리에서 연산이 이루어진다 모든 Integer 를 합치다던가 원래자료를 건들이지 않고 다른메모리에서 이루어진다. 중간연산 : 조건으로 자료를 필터한다. 꺼내온다. 최종연산 : 그거에 결과를 출력 , 그합을 구한다던가 Stream 연산을 중간연산은 이어서 할수..
스트림(Stream) – 연산기능 자료의 대상과 관계없이 동일한 연산을 수행할 수 있는 기능(자료의 추상화) 배열 ,컬렉션에 동일한 연산이 수행되어 일관성 있는 처리 가능 한번 생성하고 사용한 스트림은 재사용할 수 없다. 스트림 연산은 기존 자료를 변경하지 않는다. 중간 연산과 최종 연산으로 구분된다. 최종 연산이 수행되어야 모든 연산이 적용되는 지연 연산 Stream 객체를 생성하고 배열에 대해서 연산을 할 때 그 배열을 직접 건들이지 않고 다른 메모리에서 연산이 이루어진다 모든 Integer 를 합치다던가 원래자료를 건들이지 않고 다른메모리에서 이루어진다. 중간연산 : 조건으로 자료를 필터한다. 꺼내온다. 최종연산 : 그거에 결과를 출력 , 그합을 구한다던가 Stream 연산을 중간연산은 이어서 할수..
람다식이란 ? 자바8부터 제공 자바에서 함수형 프로그래밍(functional programming) 을 구현하는 방식이다. 함수기반의 프로그램 매개변수를 받아서 매개변수를 프로그래밍을 하게되면 외부변수들을 사용하지 않는다 순수 함수형 프로그래밍 외부의 다른 것에 부수적인 영향을 주지 않는다 다른 변수값이 변한다는가 이런일이 일어나지않아 병렬처리가 가능하다. 객체가없이 메소드를 호출한다는지 기능을 수행하는거에 쉽지가 않다 그런데 클래스를 생성하지 않고 함수 호출만으로 수행할수있는 기능을 제공 내부적으로 익명객체가 생성되는데 밖에 보이지 않고 심플하게 나온다. 함수형 프로그래밍이란 ? 순수 함수 를 구현하고 호출한다 외부변수를 사용하지않고 매개변수만 사용해서 구현 입력받은 자료를 기반으로 수행되고 외부에 영..
지역 내부 클래스 package innerclass; class Outer { int outNum = 100; static int sNum = 200; Runnable getRunnable(int i) { // 메소드안에서 지역변수 사용시 Runnable 한 타입의 객체를 받는다. 매개변수도 지역변수 이다. 지역변수들은 상수가 된다. // 지역변수는 메소드가 호출해서 끝날떄 까지 // 지역변수들은 다 상수가 된다. 변경을 못하게된다. int num = 100; // 지역변수 class MyRunnable implements Runnable { // 지역 내부 클래스가 된다. @Override public void run() { // 로컬변수는 { } 안에서만 존재하고 메소드안에서 지역변수 사용시 상수가 ..
내부클래스 람다식에서는 익명클래스가 사용된다. 내부클래스란 ? 클래스 내부에 구현한 클래스 (중첩된 클래스) 클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스이다. 주로 외부 클래스 생성자에서 내부 클래스를 생성한다. 클래스 외부에서 쓸일이 없고 내부에서만 쓰일거면 내부에서 만든다 나중에 익명내부 클래스(이름이없는) 를 배울 때 종종쓴다. package innerclass; class OutClass { // 외부클래스 private int num = 10; // 멤버 변수 private static int sNum = 20; // 정적 변수 private InClass inClass; // 내부클래스 선언 public OutClass() { inClass = new InClass(); // 주로 ..