본문 바로가기

Java

(17)
예외 : 정보 얻기 printStackTrace(), getMessage() Exception에 메소드가 있다. 예외의 정보를 가져올 수 있다. printStackTrace();- 처음 호출 한 곳 부터 에러 발생한 끝까지 들어간 내용 그대로 보여준다. 말 그대로 Stack을 trace 했으니, Stack에 쌓여있는 모든 함수들을 그대로 뿌려준다. getMessage();예외 메세지만 간략하게 보여준다. 다음과 같이 Exception과 Account 클래스를 정의했다고 볼 때public class BalanceException extends Exception{ public BalanceException(){} public BalanceException(String message){ super(message); } }public class Account{ private long b..
예외 : 사용자 정의 예외와 예외 발생 자바 표준 API에서 제공하는 에외 클래스 말고, 내가 정의해서 쓸 수 있다. - >사용자 정의 예외 예를 들어 은행 업무 프로그램에서 잔고보다 더 많은 출금 요청 들어왔을 경우, 잔고 부족 예외를 발생시킬 수 있다. 일반 예외의 경우 Exception 상속하고, 실행 예외의 경우 RuntimeException을 상속한다.public class 사용자정의Exception extends [Exception|RuntimeException]{ public 사용자정의Exception() {} //기본 생성자 public 사용자정의Exception(String message){ super(message); } //메세지 있는 기본 생성자 }클래스 이름은 사용자정의이름Exception으로 끝나는 게 좋다. 위에서 ..
예외 : 예외 떠넘기기 예외 발생 했을 때 처리하는 방법이 try-catch말고 메소드를 호출한 곳으로 떠넘길 수도 있다.throws키워드를 사용한다.리턴타입 메소드명(매개변수, ./..) throws 예외클래스1, 예외클래스2, ... {} //혹은 리턴타입 메소드명(매개변수, ./..) throws Exception {} //으로 모든 예외를 public void method1(){ try{ method2(); }catch(ClassNotFoundException e){ e.printStackTrace(); //처음 호출한데서부터 에러 발생한 끝까지 들어간 내용 그대로 보여준다. 말 그대로 보면, //stack을 trace 했으니. 처음 호출에서부터 차곡차곡 쌓인 모든 함수들을 그대로 뿌려준다. } } public void..
예외 : try-with-resource 자바 7에서 새로 추가 된 try-with-resources를 사용하면 예외 발생 여부와 상관없이 사용했던 리소스 객체(각종 입출력 스트림, 소켓 등)의 close()메소드를 호출해서 안전하게 닫아줄 수 있다. 자바6 이전에는 이런 식으로 리소스를 닫아줬다.FileInputStream fis = null; try{ fis = new FileInputStream("file.txt"); }catch(FileNotFoundException e){ }finally { try { fis.close(); } catch (IOException e) { ... } }try-catch안에 close()메소드를 처리해주기 위해서 다시 또 예외 처리를 해줘야 한다. 자바 7부터는 이런 식으로 쓸 수 있다. (try-with..
예외 : try-catch-finally try-catch-finally문예외 처리 코드는 try-catch-finally블록을 이용해서 일반 예외와 실행 예외가 발생할 경우 예외 처리할 수 있도록 해준다. try{ 예외 발생 가능 코드 }catch(예외 클래스 e){ 예외 처리 }finally{ 항상 실행 }일반 예외 처리는 컴파일러 과정에서 발생하기 때문에, 이클립스 빨간 밑줄을 그어 예외 처리 필요성을 알려준다. public class TryCatchFinallyRuntimeException{ public static void main(String[] args){ String data1 = "안녕"; String data2 = "감사합니다"; try{ int value1 = Integer.parseInt(data1); int value2 ..
예외 : 예외와 예외 클래스 컴퓨터의 오동작 또는 고장으로 인해 오류 발생 → 에러 사용자의 잘못된 조작, 개발자의 잘못된 코딩 → 예외 예외에는 "일반 예외"와 "실행 예외" 두 가지 종류가 있다. 일반 예외는 컴파일러 체크 예외라고도 부름. 컴파일 과정에서 예외 처리 코드가 필요한지 검사하기 때문 실행 예외는 JVM이 프로그램을 실행하는 도중 예외 발생하면 예외가 발생한다. 자바에서는 예외를 클래스로 관리한다. JVM은 프로그램을 실행하는 도중에 예외가 발생하면 해당 예외 클래스로 객체를 생성하고, 이를 활용해서 예외 처리를 해준다. 모든 예외 클래스는 java.lang.Exception 클래스를 상속 받는다. 실행 예외실행 예외는 컴파일러가 체크해주지 않음. 자주 발생되는 예외를 눈에 익혀두면, 어떤 예외가 있는지 체크하는데 ..
어노테이션(Annotation) 어노테이션(Annotation)어노테이션(Annotation)은 메타데이터(metadata)라고 볼 수 있다. 메타테이터란 컴파일 과정과 실행과정에서 코드를 어떻게 how 컴파일하고 처리할 건지 정보! 어노테이션의 용도-컴파일러에게 코드 문법 에러를 체크하도록 정보 제공-개발 툴이나 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보 제공-실행(런타임 시) 특정 기능을 실행하도록 정보 제공 컴파일러에게 코드 문법 에러 체크하도록 정보 제공하는 대표적인 예는 @Override 어노테이션이다.이거 오버라이드(재정의)된 건데 정확하게 문법 썼는지 체크해라!고 말하는거랑 같다. 그 외에도 @Deprecated(더 이상 안 쓰는 메서드, 쓸 경우 경고!) @SuppressWarnings(컴파일 경고 무시), ..
static과 싱글톤 Static정적(static)은 '고정된'이란 의미를 갖고 잇다.클래스에 고정된 멤버로 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 필드와 메소드 선언 시 static 키워드를 추가적으로 붙이면 된다.public class 클래스명{ //정적 필드 static 타입 필드 [=초기값]; //정적 메소드 static 리턴 타입 메소드( 매개변수선언, ...) {...} }클래스 로더가 클래스(바이트 코드)를 로딩해서 메소드 메모리 영역에 적재할 때 관리된다. 로딩 끝나면 바로 사용할 수 있음. 정적 필드를 사용하는 이유1. 항상 값이 변하지 않는 변수인 경우 메모리 할당을 한번만 하여 메모리를 낭비하지 않기 위해2. 공유하여 사용해야하는 변수인 경우 (보통 이 이유로 많이 사용한다) 정적블..

반응형