[8-7] 다음은 1~100사이의 숫자를 맞추는 게임을 실행하던 도중에 숫자가 아닌 영문자를 넣어서 발생한 예외이다. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 보완하라. public class Ex8_7 { public static void main(String[] args) { int answer = (int) (Math.random()*100)+1; int input =0; int count =0; do { count++; System.out.println("1과 100사이의 값을 입력해라"); input = new Scanner(System.in).nextInt(); if(answer > input) { System.out.println("더 큰수를 입력해라 : "+inp..
1) 사용자 정의 예외 - 우리가 직접 예외 클래스를 정의할 수 있다. - 조상은 Exception(사용자가 발생시키는 예외)과 RuntimeException(프로그래머 실수로 발생하는 예외)중에서 선택 (웬만하면 예외 선택처리 가능한 RuntimeException로 !) class MyException extends Exception { MyException(String msg) { //문자열을 매개변수로 받는 생성자 super(msg); // 조상인 Exception클래스의 생성자를 호출 = Exception(String msg) } } * 순서 조상 정하기 (Exception or RuntimeException) String 매개변수가 있는 생성자 생성 ex.예시 class MyException1 ..
1) 예외 처리하는 방법 try-catch문 (직접처리) 예외 선언하기 (예외 떠넘기기) 은폐 (감추기/무시) : 빈 catch블럭 사용. 웬만하면 사용하지 않기 2) 예외선언 : 메서드가 호출시 발생가능한 예외를 호출하는 쪽에 알리는 것 문법 : 메서드명() + throws + 예외1, 예외2... { 메서드 내용 } ex.예시 1 예외처리 할 수 있는 try-catch문이 없어서 예외를 method1 -> method2 -> new Exception순으로 떠넘기다가 마지막에 main메서드 throws Exception으로 인해 예외는 JVM으로 떠넘겨짐. JVM이 실행결과를 출력하고 비정상적으로 (예외처리) 종료됨. ex.예시2 import java.io.*; public class Ex8_10 { ..
checked 예외 (Exception과 자손) : 컴파일러가 예외처리 여부를 체크 (예외 처리 필수 -> try-catch문 필수!) ex. 예시. new Exception은 checked 예외(예외 처리 필수) -> 오류발생 !! -> try-catch문이 있어야함 unchecked 예외 (RuntimeException과 자손) : 컴파일러가 예외처리 여부를 체크 안함 (예외 처리 선택) ex. 예시. RuntimeException은 unchecked 예외(예외 처리 선택) -> 아래 예시 오류 x
1) 예외 (고의로) 발생시키는 법 연산자 new를 이용해 발생시키려는 예외클래스 객체 생성 Exception e = new Exception("고의로 발생시켰음"); 키워드 throw를 이용해서 예외 발생시키기 throw e; *위 두 줄을 아래 한줄로 생략 가능 throw new Exception("고의로 발생시켰음."); public class Ex8_6 { public static void main(String[] args) { try { Exception e = new Exception("고의로 발생시켰음."); throw e; //예외 발생시킴 // 위 두줄을 throw new Exception("고의로 발생시켰음."); 이 한 줄로 사용가능 } catch (Exception e) { Syst..
예외가 발생하면 예외 객체가 생성된다. 그곳엔 예외 정보가 들어가 있고 아래 메서드들을 통해 그 정보를 가져올 수 있다. 1) 대표적인 메서드 printStackTrace() : 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메세지를 화면에 출력한다. - 호출법 : 참조변수.printStackTrace(); getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메세지를 얻을 수 있다. ex.예시 public class Ex8_5 { public static void main(String[] args) { System.out.println(1); System.out.println(2); try { System.out.println(3); System.out.prin..
1) 예외처리(exception handling)이란? - 프로그램 실행 시 발생가능 한 예외(미약한 오류) 발생에 대비한 코드를 작성하는 것. - 목적 : 프로그램의 비정상 종료를 막기위해, 정상적인 실행상태 유지하는 것. 2) 문법 try { // 예외 발생 가능성 있는 문장들 넣기 (ex. 쇼핑하기) } catch (Exception1 e1) { // Exception1이 발생한 경우, 이를 처리하기 위한 문장 적기(ex. 돈이 부족) } catch (Exception2 e2) { // Exception2이 발생한 경우, 이를 처리하기 위한 문장 적기(ex. 물건 부족) } catch (Exception3 e3) { // Exception3이 발생한 경우, 이를 처리하기 위한 문장 적기(ex. 가게..
1) 종류 컴파일 에러(compile-time error) : 컴파일 할 때 발생하는 에러 (수정 전까지 실행 불가) 컴파일러가 하는 일 - 구문체크(문법이 맞는지) - 번역 - 최적화 - 생략된 코드 추가 런타임 에러(runtime error) : 실행 할 때 발생하는 에러 (수정 안해도 실행가능. 에러발생해서 프로그램 종료됨) 런타임에러 종류 - 에러(error) : (프로그램 코드에 의해서) 수습될 수 없는 심각한 오류 (ex. Out Of Memory Error: 메모리 부족으로 인한오류) - 예외(exception) : (프로그램 코드에 의해서) 수습될 수 있는 미약한 오류(ex. Exception, RuntimeException..) ㄴ 예외처리(exception handling)이란? - 프..
- Total
- Today
- Yesterday