예외

예외 유형



예외 유형



에러의 종류는 크게 이하의 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 / 아피 /

좋은 웹페이지 즐겨찾기