예외

예외 유형



예외 유형



에러의 종류는 크게 이하의 3개.
1. 문법 오류
2. 런타임 오류
3. 논리 오류

1. 문법 오류



· 문법 오류로 인한 컴파일 오류
・예는 세미콜론 잊어, 철자 미스 등
· 컴파일되지 않음

2. 런타임 오류



· 실행 중 오류가 발생하여 발생하는 오류
・예는 있어야 하는 파일이 삭제된다, 있어야 하는 값이 null값이 되어 있는 등
· 컴파일

3. 논리 오류



· 구문 오류로 인해 실행 결과가 의도 한 것과 다르다.
・예는 계산기 소프트로 3+5가 35로 출력되는 등
· 컴파일

정리하면 ...



세 가지 종류가 있지만
・「2. 실행시 에러」에 대해서는, 에러 발생시를 상정한 코드를 기술해 대응!
・「1. 문법 에러」 ・「3. 논리 에러」는, 원래의 코드를 수정해 대응!

예외를 나타내는 클래스와 그 종류



・에러 발생 상황마다 클래스가 준비되어 있어 상속 계층으로 구성되어 있다
・클래스 마다의 의미 ・계속 계층도는 이하와 같다



정리하면 ...


Exception 에 대해서는, 에러 발생시에 대응할 수 있는 코드를 기술할 필요가 있다

예외 처리



예외를 조사하는 방법



예외는 JavaAPI에 설명되어 있습니다.

예





예외 처리 유형



예외 처리의 종류는 크게 이하의 2개이다.
1.catch 구문
2.throws 구문

1.catch 구문



catch 구문이란?



예외가 발생했을 경우의 처리를, 자신의 메소드내에 기술할 때에 사용한다

사용방법


try {
  本来の処理
}catch (例外クラス 変数名) {
  例外が発生した場合の処理
}finally{
  例外があってもなうても必ず実行する処理
}

[처리 흐름]
① try 메소드내에 처리를 기술해, 예외가 발생했을 경우는, 에러 클래스의 인스턴스를 catch 에 건네준다
② catch(例外クラス 変数名) 의 (例外クラス 変数名) 에서 예외 인스턴스를 받는다.
메소드내에는 받은 후의 처리를 기술한다.
③ finally에서는 파일을 닫거나 절단하는 등의 처리를 실시한다.

예외 인스턴스가 가지는 정보



①예외 정보의 해설문



소위, 오류 메시지. String getMessage() 로 표시.

② 스택 트레이스



JVM이 프로그램의 메소드를 어떤 순서로 호출해, 어디에서 예외가 발생했는가.void printStackTrace 로 내용 표시.

예


    public static void main (String[] args) {
        FileWriter fw = null;
        try {
            fw = new FileWriter("date.txt");//インスタンスの生成
            fw.write("hellow");//中にhellowと書き込む
        }catch (Exception e) {
            System.out.println("何らかの例外が発生しました");
        }finally{
            try {
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

보충



· catch (Exception e)는 Exception의 자손의 예외 인스턴스라면 모두 받는다는 의미
・FileWriter 클래스에 대해서는 이하 참조
htps : // / cs. 오 c. 코 m/쟈ゔぁ세/jp/6/아피/쟈め/이오/후우 W리테 r. HTML
htps //w w. 세주쿠. 네 t/bぉg/20657

finally를 생략하는 방법


try (
  ファイルインスタンスの生成
){
  ファイルに対する処理
}catch{
}

()내에서 열린, 파일이나 데이타베이스는, 처리 종료후에 자동적으로 close 메소드를 호출해 준다.

2.throws 구문



throws 구문이란?



예외가 발생했을 경우의 처리를, 호출원의 메소드에 부탁할 때에 기술하는 방법

사용방법


メソッド名  throws 例外クラス名1,例外クラス名2 

[보충]
・ throws 를 선언하는 것으로, try catch文 의 기술이 의무는 없어진다
· 호출자 메소드는 try catch文를 작성해야합니다.

예외를 발생시키는 방법



사고방식



발생한 예외를 받을 뿐만 아니라, 예외를 통지하는 것이 가능

사용방법


throw 例外インスタンス名

예


//mainメソッド
public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setAge(-100);

    }
}
//Personクラス
public class Person {
    int age;
    public void setAge(int age) {
        if(age<0) {
            throw new IllegalArgumentException("年齢は正の数を指定すべきです。");
        }
        this.age = age;
    }


}
//出力結果
Exception in thread "main" java.lang.IllegalArgumentException: 年齢は正の数を指定すべきです。
    at Java15.Person.setAge(Person.java:7)
    at Java15.Main.main(Main.java:6)

· IllegalArgumentException 클래스에 대해서는 이하 참조
htps : // / cs. 오 c. 코 m / 그럼 ぁせ / jp / 7 / 아피 /

좋은 웹페이지 즐겨찾기