목록Java (181)
충분히 쌓여가는
멀티 catch 블럭 내용이 같은 catch 블럭을 하나로 합친 것 try { ... } catch (ExceptionA e) { e.printStackTrace(); } catch (ExceptionA e2) { e2.printStackTrace(); } 부모-자식 관계일 때는 에러 발생 catch 블럭 체크할 경우 instanceof로 체크한다 즉, 발생한 예외와 일치하는 것을 처리하는게 아닌 조상 타입의 참조변수가 선언되어 있는 catch 블럭으로 처리가능하다 (ChildException을 굳이 사용할 필요가 없다) try { ... // } catch (ParentException | ChildException e) { // 에러 } catch (ParentException e) { // OK, ..
printStackTrace(), getMessage() printStackTrace() 예외 발생 당시의 호출 스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다 getMessage() 발생한 예외 클래스의 인스턴스에 저장된 메시지를 얻을 수 있다 0으로 나누었을 때 예외 객체(ArithmeticException)가 생성된다 생성된 예외 객체에는 printStackTrace(), getMessage()과 같은 메서드들이 있다 catch 블럭에서 ArithmeticException을 처리할 수 있는 지 확인한다 발생한 예외객체(ArithmeticException)와 참조변수 ae의 타입(ArithmeticException)이 일치한다 catch 블록 내에서 참조변수 ae를 ..
예외 처리(exception handing) 정의 프로그램의 실행시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 목적 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 try-catch 문 예외처리할 때 사용하는 문 if문과 달리, try 블럭이나 catch 블럭 내에 포함된 문장이 하나뿐이어도 괄호{}를 생략할 수 없다 try { // 예외가 발생할 가능성이 있는 문장들을 넣는다 } catch (Exception1 e1) { // Exception1이 발생했을 경우, 이를 처리하기 위한 문장을 넣는다 } catch (Exception2 e2) { // Exception2이 발생했을 경우, 이를 처리하기 위한 문장을 넣는다 } catch (ExceptionN eN) { // E..
프로그램 오류 컴파일 에러(compile-time error): 컴파일할 때 발생하는 에러 런타임 에러(runtime error): 실행 할 때 발생하는 에러 논리적 에러(logical error): 작성 의도와 다르게 동작 컴파일 에러 자바 컴파일러 하는 일 1. 구문 체크 2. 번역 3. 소스코드 최적화 public class ExceptionTest { public static void main(String[] args) { system.out.println(args[0]); // 에러, System } } 런타임 에러 실행 중 에러 발생 public class ExceptionTest { public static void main(String[] args) { System.out.println(a..