프로그램은 정상 실행 but 실행 중에 정상 종료되지 않는 에러
(컴파일 에러 : 실행 X)
Exception Class => 정상 실행 중 오류 발생 시 오류의 종류를 확인 할 수 있다.
(Exception 내장 클래스 : 최상위 클래스, 하위에 예외처리와 관련된 서브클래스들이 있는데, 이 클래스들을 사용하여 어떤 예외가 발생했는지 파악하고, 정상종료되도록 처리할 수 있다.)
Checked Exception : 반드시 try-catch(-finally)문 사용해야 하는 예외처리
Unchecked Exception : try-catch문이 없어도 컴파일되고 실행되는 예외처리
(but 둘 다 try-catch 사용해야함,,,롸?)
try {
일반 코드
(=예외(Exception) 발생 가능성이 있는 코드)
} catch (예외가발생했을때의자료형 변수명) {
예외가 발생했을 때 대체할 코드
} finally {
정상실행 또는 예외발생에 무관하게
항상 실행되는 코드(필요한 경우 작성)
}
매뉴얼 익셉션 / 커스텀 익셉션 / 익셉션 던지기 / 스로우 익셉션
커스텀메서드에서 throw 구문을 사용하여 익셉션 객체를 생성하고 전달
메인클래스)
package pack_Throw;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("10이하의 자연수 입력 : ");
int num = scanner.nextInt();
scanner.close();
Custom objCustom = null;
try {
objCustom = new Custom(num);
objCustom.mtd();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
package pack_Throw;
public class Custom {
private int num;
public Custom(int num) throws Exception {
if (num>0 && num<=10) {
this.num = num;
} else {
throw new Exception("숫자를 다시 입력해주세요.");
}
}
public void mtd() {
System.out.println("입력값은 " + num + "입니다.");
}
}
pointer : 주소 / null : 미입력 상태를 의미하는 값
참조자료형(기본자료형X)에서 참조할(초기화할) 실제 값이 있는 주소가 없는 경우 (참조값 자체가 없는 경우)
/ 참조할 실제 값이 있는 주소에 전기신호가 들어있지 않은 경우
JSP에서 가장 많이 만나게 될 에러!
기본 자료형 : int, long, float, double, char, boolean
=> 실제 값을 변수에 저장
참조 자료형 : 배열, 클래스, 인터페이스, 열거
=> 실제 값이 있는 주소를 변수에 저장
package pack_NullPointer;
public class Main {
static String str;
public static void main(String[] args) {
try {
String a = new String(str);
System.out.println("a : " + a);
} catch (NullPointerException e) {
System.out.println("실제값이 존재하지 않습니다.");
}
}
}