에러
런타임 에러
예외
try{
int result = 10 / 0;
System.out.println(result);//예외가 발생하면 예외의 객체가 생성됨
}catch(ArithmeticException | IndexOutOfBoundsException e){
//그 객체의 파라미터가 실행되는 것 |로 이어주면 두 개의 예외 처리 가능
e.printStackTrace();//콘솔 창에 아까 발생했던 예외가 나타남
}catch(NullPointerException e){
}catch(Exception e){//모든 예외클래스의 부모클래스를 넣음
- 모든 예외를 하나로 처리할 수 있다(다형성)
e.printStackTrace();
}
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();//Ctrl + 1 : 도움말
- 예외가 났을 때 빨간줄 위에서 단축키 -> try + catch 나오면 예외처리하기
}
test1();
}
private static void test1() {
test2();
}
private static void test2() {
System.out.println(10 / 0);
여러 개의 예외가 발생했을 때 - 대부분 가장 위에 뜨는 줄에 들어가면 됨.
try {
new FileInputStream("");
콘솔창에 나오는 예외 중 위에서부터 보면서 가장 첫번째로 나오는 내가 만든 예외를 찾는다.
} catch (FileNotFoundException e) {
TODO Auto-generated catch block
e.printStackTrace();
}
}
finally
FileInputStream fis = null; // 파일 읽기 - 운영체제의 허락을 받아서 여는 것
try {
fis = new FileInputStream("d:/file.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally{
try {
fis.close();
} catch (Exception e) {
e.printStackTrace();
}//반납 - 반드시 호출해야하는 메서드
}
//예외 발생 : try -> catch -> finally
//예외 미발생 : try -> finally
//자동 자원 반환(JDK1.7)
try(FileOutputStream fos = new FileOutputStream("d:/file.txt")){//파일을 만드는 클래스
//try가 끝날 때 자동으로 close를 호출해줌.
String str = "아무내용이나 적어봅시다...";
byte[] bytes = str.getBytes();
for(int i = 0; i <bytes.length; i++){
fos.write(bytes[i]);
}
}catch(Exception e){
e.printStackTrace();
}
}
// 예외를 발생시킬 때 throw라는 예약어 사용
try {
throw new IOException();
} catch (IOException e) {
e.printStackTrace();
} // 예외를 강제로 발생시키는 방법
// NullPointerException : 변수에 null이 들어있어서 발생된다.
// String str = null;
// System.out.println(str.equals(""));//String 객체가 들어있어야만 equals가 실행됨. -
// 변수를 찾아서 왜 null이 들어갔는지 찾기
// IndexOutOBoundsException : 배열의 인덱스를 벗어나서 발생된다.
int[] a = new int[10];
for (int i = 0; i <= a.length; i++) {
System.out.println(a[i]);
}
}
// 단축키
// Alt + 방향키 : 한 줄을 이동시킴(블럭지정하면 여러줄도 가능)
// Ctrl + Alt + 방향키 : 한 줄 복사
// Ctrl + F : 찾기, 단어검색 / Replace : 어떤 단어 입력하고 바꾸기
// Ctrl + Shift + R : 파일 이름으로 파일 찾기
public class ThrowsException {
public static void main(String[] args) {
try {
method();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void method() throws IOException {
//예외선언 : 이 메서드를 호출했을 때 예외가 발생할 가능성이 있다 알려주는 것
//메서드 뒤에 throws를 입력하고 예외종류를 입력
throw new IOException(); //선언된 예외는 처리하지 않아도 됨.
예외처리는 누가?-> 메서드를 호출한 곳에서
}
}