본문 바로가기

Language/Java

Finally 구문 1. 설명 예외 구문에서 문제가 발생하건 말건 예외처리 후 무조건 실행해야하는 코드를 적어 놓는 구문 2. 코드리뷰 public class _04_Finally { public static void main(String[] args) { try{ System.out.println("택시의 문을 연다."); throw new Exception("휴무 택시"); // System.out.println("택시에 탑승한다."); // 예외를 던지는 문장 주석 처리 하고 택시를 탑승한다는 정상 출력문이 나와도 finally 구문 실행 } catch (Exception e) { System.out.println("!! 문제 발생: " + e.getMessage()); } finally { System.out.pri.. 더보기
Throw 1. 정의 일부러 예외를 발생 시키는 Keyword (1)형태 // 내가 Catch 쪽으로 던질 새로운 예외 객체 생성 throw new Exception("무슨 에러인지 설명"); // throw에서 던진 예외 객체는 Catch에서 받아서 처리한다. 2. 코드 리뷰 public static void main(String[] args) { //나이가 19세 미만일 경우 예외 처리. int age = 17; try { if(age < 19){ throw new Exception("만 19세 미만에게는 판매하지 않습니다."); } else { System.out.println("주문하신 상품 여기 있습니다."); } }catch (Exception e){ //오류가 무엇인지 보여주는 예외 객체 매소드 e.p.. 더보기
오류에 따른 맞춤 예외 처리 1. 개별 예외 처리 방법 Exception 클래스는 모든 예외들의 조상 클래스 이다. 그래서 모든 예외를 다형성의 원리에 의해 다 받을 수 있었던 것이다. catch의 () 안에 예외별로 객체를 만들어주면, 해당 예외가 발생 했을 시에만 발동하는 예외 처리 구문을 만들 수 있다. // 배열 인덱스를 벗어난 곳에 대한 소스 실행을 할 경우의 예외처리문, // 잘못된 형변환이 일어났을 경우의 예외처리문을 따로 두었다. // 맨 마지막은 나머지 예외들에 대한 일괄 처리이다. catch (ArrayIndexOutOfBoundsException e){ System.out.println("인덱스를 잘못 설정했어요."); } catch (ClassCastException e) { System.out.println(.. 더보기
Run-Time(런타임) 오류와 예외 처리 1. 런타임 오류란? (1)런타임오류와 컴파일 오류 비교 종류 컴파일 에러 런타임 에러 뜻 소스코드를 기계어로 바꿀 때 (컴파일 시) 일어나는 에러. 대게 문법적 오류로 인해 일어난다. 코드 실행 도중에 일어나는 에러 코드가 문법적으로 말은 되지만, 논리적으로 말이 안될 때 일어난다. Run 했을 시 애초에 문법적으로 틀려서 Run 조차 안된다. 런타임 오류 있을 시 프로그램은 코드를 끝까지 실행하지 못하고 종료된다. (런타임 오류가 발생한 지점에서 프로그램이 종료된다.) 예시 int i = "문자열"; (애초에 말이 안되는 구조) int[] arr = new int[3]; arr[5] = 100; 해당 배열은 길이가 3이므로, 5에 값을 집어 넣을 수 없기에 에러가 발생한다. 코드 한 줄 한 줄은 문법.. 더보기
[JAVA] Stream 실습 1. 코드리뷰 // "python", "java", "javascript","c","c++","c#" // C로 시작하는 프로그래밍 언어 추출 /*.startsWith()는 String 클래스의 매소드로서 ()안의 값이 문자열에 있는지를 boolean으로 반환 .filter()는 ()안의 조건에 맞는 요소만 골라서 만든 새 스트림을 반환 */ Arrays.stream(langs).filter(x-> x.startsWith("c")).forEach(System.out::println); System.out.println("-----------------------------------------"); // java 라는 글자를 포함하는 언어 Arrays.stream(langs).filter(x-> x.co.. 더보기
[JAVA] Stream 1. Stream 이란? (0) 뜻 배열이나 컬렉션 프레임워크 안에 저장된 요소들을 하나씩 순회 하면서 코드를 실행할 수 있는 기능을 말함. 내부에 반복자가 따로 존재함. Java 8부터 추가 되었고, 그 이전 시절에는 배열이나 컬렉션에 대한 순회 연산을 할 때는 for, foreach를 써야 하거나 Iterator 써야해서 코드 수가 많아지고 지저분 했음. 하지만 Stream 덕에 코드가 간편해지고 가독성이 좋아짐. (1) 생성 a. 기본 자료형 배열에 대한 Stream 생성 **참고: 배열(a,b)는 배열에 대한 다양한 매소드가 저장되어 있는 Arrays 클래스를 이용하여 Stream 작성 // int 배열 생성 int[] scores = {100, 95,90,85,80}; // Arrays.stre.. 더보기
[JAVA] 람다식과 함수형 인터페이스 1. 람다식 (1) 정의 익명함수 (이름이 없는 함수) == 접근제어자, 반환형, 함수이름, 파라미터의 자료형 다 필요 없음. 람다식도 일급 객체이다. **일급 객체란? 데이터나 변수를 받을 수 있는 객체, 어떤 매소드의 파라미터로 들어갈 수 있는 객체, 어떤 매소드의 반환 값이 될 수 있는 객체 이다. (2) 형태 (전달값 1, 전달값2, ...) -> { 실행코드 } 2. 함수형 인터페이스 (1) 뜻 추상 매소드가 오직 하나 뿐인 인터페이스 (2)람다식과의 관계 람다식은 오직 함수형 인터페이스로만 접근 가능. ** why? 인터페이스에 추상 매소드가 두 개이면, 람다식과 매칭되는 추상 매소드가 무엇인지 모호해진다. 따라서 추상 매소드가 오직 하나인 함수형 인터페이스만이 람다식과 매칭이 가능하여 쓸 수.. 더보기
[JAVA] 익명 클래스 1.정의 익명 클래스== 이름 몰라도 되는 클래스 == 다시 불려서 쓰일 일이 없는 클래스 == 1회용 클래스 객체 만들 때, 그 객체에 필요한 매소드 재정의, 추상화 함수 실체화를 같이 해버림. (이건 해당 내용으로 다시 쓰일 일이 없을 때 유용하다. 만약 재사용이 필요하다면 상속 클래스로 만들어두고 써야함.) 2. 일반 클래스에 대한 상속 없이 다른 기능이 추가된 객체를 만드는 경우 (1) 우리가 쓸 클래스 class Coffee{ public void order(String coffee){ System.out.println("주문하신 " + coffee + "나왔습니다. "); } public void returnTray(){ System.out.println("커피 반납이 완료되었습니다."); }.. 더보기