요르딩딩

[뉴렉처] 자바 예외처리 (4,5,6,7강) 본문

[Web]/[Error & Exception]

[뉴렉처] 자바 예외처리 (4,5,6,7강)

요르딩딩 2022. 1. 17. 08:58
728x90
반응형

4강 <예외 클래스 생성과 던지기>

public calss Calculator{
	public Calculator(){}

	public static int add(int x, int y) throws 천을 넘는 예외, 음수가 되는 예외{ //내가 처리하지 않고, 나를 사용하는 책임지가 처리하도록 위로 던지는 방법
		int result = x + y;
        
		if(result > 1000)
		    throw new 천을 넘는 예외(); // 예외 식별자인 클래스를 만들어야한다, 여기서 던졌지만 제일 먼저 받는것은 자가자신이고. 자기자신이 처리하지 않겠다라고 하면 위로 던진다.
		if(result < 0)
		    throw new 음수가 되는 예외(); // 예외 식별자인 클래스를 만들어야한다. 

        return return;
    }
...
}
public static coid main(String[] args) throws 천을 넘는 예외, 음수가 되는 예외{

    Calculator calc = new Calculator();
    int result = 0;
    result = Calculator.add(3,-4);  //예외 발생하면서 더이상 진행이 되지 않는다. 예외를 처리하지않고 런타임에게 던졌기 때문이다.
…
}

이는 의미없는 예외를 던지는 경우이므로 최대한 사용하지 않도록 합니다.

 

5강 <예외 처리하기>

에러메세지를 사용하는 이유

  1. 사용자에게 안내
  2. 치명적인지 아닌지에 따라서 이어서 실행할지 안할지 판단.

- catch로 예외를 잡은 경우 thow 할 필요가 없습니다.

public static coid main(String[] args) throws 음수가 되는 예외{ //자바 런타임이 예외를 받게 된다.

    Calculator calc = new Calculator();
    int result = 0;
        try{
            result = Calculator.add(3,10004);  
        }
        catch(천을 넘는 에외 e ){ //천을 넘는 예외를 처리하는 부분
            System.out.println(“e.getMessage”);
        } 
    …
}

public class 천을 넘는 예외 extends Exception{
	@Override
	public String getMessage(){
		return “입력 값의 합이 1000을 넘는 오류가 발생했습니다.”
	}
}

 

6강 <다중 예외처리>

# 동일하거나 상이한 예외를 처리하는 방법

public static coid main(String[] args){

    Calculator calc = new Calculator();
    int result = 0;
    
    try{
        result = Calculator.add(3,10004);  
    }
    catch(천을 넘는 에외 | 음수가 되는 예외 e){ // 두개의 예외가 동일한 처리를 요할 경우
        System.out.println(“e.getMessage”);
    } 

또는

     try{
         result = Calculator.add(3,10004);  
     }
     catch(천을 넘는 에외 e){ //두개의 예외가 상이한 처리를 요할 경우
         System.out.println(“e.getMessage”);
     } 	
     catch(음수가 되는 예외 e){ //두개의 예외가 상이한 처리를 요할 경우
         System.out.println(“e.getMessage”);
     } 
…
}
public calss Calculator{
    public Calculator(){}

    public static int add(int x, int y) throws 천을 넘는 예외, 음수가 되는 예외{ //내가 처리하지 않고, 내를 사용하는 책임지가 처리하도록 위로 던지는 방법 
        int result = x +y;

        if(result > 1000)
            throw new 천을 넘는 예외();  

        if(result < 0)
            throw new 음수가 되는 예외(); 

        return return;
	}

	public static int sub(int x, int y) throws 음수가 되는 예외{ //내가 처리하지 않고, 내를 사용하는 책임지가 처리하도록 위로 던지는 방법
        int result = x - y;

        if(result < 0)
            throw new 음수가 되는 예외(); 

        return return;
	}
…
}

 

# 나머지(마지막에 Exception e) 예외를 처리하거나, 무조건(finally) 실행되는 예외처리 적용하는 방법

public static coid main(String[] args){

    Calculator calc = new Calculator();
    int result = 0;
    
    try{
        result = Calculator.add(3,10004);  
        result = Calculator.sub(3,10004);  //예외가 발생할 수 있는 것들의 하나의 범주안에 넣어 사용할 수 있다. (한번에 처리 가능)
    }
    catch(천을 넘는 에외){ 
        System.out.println(“e.getMessage”);
    } 
    catch(Exception e){ //나머지 예외처리하는 방법 (마지막에 존재해야한다. 순차적이기 때문에, 모든것을 다 받는 예외)
        System.out.println(“음수 처리”);
    }
    finally{ // 어떤 예외가 처리되던지 항상 지나처간다. 예외마다 동일한 메세지 출력 가능
        System.out.println(“입력값에 오류가 있습니다.”);
    }

}

 

7강 <Unchecked 예외>

 

- 예외의 종류

  1. checked 예외
  2. Unchecked 예외

# Unchecked 예외의 경우 런타임시 에러를 확인해보도록 해보자. 

public static coid main(String[] args){ //자바 런타임이 예외를 받게 된다.

    Calculator calc = new Calculator();
    int result = 0;
    result = Calculator.add(3,10004);  
    result = Calculator.sub(3,10004); 
    result = Calculator.div(3,0); 
}
public calss Calculator{
    public Calculator(){}

    public static int add(int x, int y) { 
        int result = x + y;
        if(result > 1000)
            throw new 천을 넘는 예외(); 

        if(result < 0)
            throw new 음수가 되는 예외();

        return return;
    …
    }

    public static int sub(int x, int y) { 
        int result = x - y;

        if(result < 0)
            throw new 음수가 되는 예외(); 

        return return;
    …
    }

}

 

# 런타임시 예외를 처리하려할 경우 (RunTimeException)

//unchecked 예외 강제화 하지 않겠다. 런타임실행할때 판단해보도록하자.
public class 천을 넘는 예외 extends RuntimeException{ 
    @Override
    public String getMessage(){
        return “입력 값의 합이 1000을 넘는 오류가 발생했습니다.”
    }
}

//unchecked 예외 강제화 하지 않겠다. 런타임실행할때 판단해보도록하자.
public class 음수가 되는 예외 extends RuntimeException{
    @Override
    public String getMessage(){
        return “음수가 발생했습니다.”
	}
}

 

침고 : https://www.nextree.co.kr/p3239/

728x90
반응형

'[Web] > [Error & Exception]' 카테고리의 다른 글

자바 예외처리 (정리)  (0) 2022.01.17
[뉴렉처] 자바예외처리 (1,2,3강)  (0) 2022.01.14
Spring 404 error 해결하는 법  (0) 2021.12.21
Comments