TIL

240725

everyday-spring 2024. 7. 25. 20:07

Java 강의가 후반부로 넘어가면서 명확하게 이해되지 않는 내용들이 나오고 있다

Exception, Extends, Abstract, Interface ...

개인과제를 위해 완강을 빠르게 하는게 목표라서 우선은 실습만 따라해보고 넘기는중

 

예외처리에 대해 강의를 들었는데도

막상 코드에 적용하려니까 쉽지 않았다

 

  • CalculatorException
package calculator;

public class CalculatorException extends Exception{
    public CalculatorException(String errorMessage) {
        super(errorMessage);
    }
}

Exception을 상속받은 custom Exception

 

  • Calculator
...

public double calculate(double num1, double num2, char operator) throws CalculatorException {
        double result = 0;

        switch (operator) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                // 두번째 숫자 0에 대한 나눗셈 예외처리
                if (num2 == 0) {
                    // CalculatorException 발생
                    throw new CalculatorException("Division by zero");
                }
                result = num1 / num2;
                break;
            default:
                // CalculatorException 발생
                throw new CalculatorException("Invalid operator");
        }

        return result;
    }
    
    ...

method() throws ... : 해당 메소드에서 Exception이 발생할 수 있음을 명시한다

throw new ... : 해당 부분에서 예외가 발생함을 명시한다

 

  • App
try {

	result = calc.calculate(num1, num2, operator);
        
	...
        
} catch (CalculatorException e) {
	System.out.println(e.getMessage());
}

Exception이 발생하는 method를 사용할 땐 Exception을 처리할 수 있도록 try-catch문을 사용한다

catch문에서 말 그대로 catch된 Exception에 대한 동작을 한다

 


 

개념이해가 명확하지 않았는데 강의 들으면서 실습만 했던 것보다

실제로 작성한 코드에 적용해보니 전보다 확 이해가 됐다

몰랐던 것이 조금 명확해지는 과정이 너무 재밌었다

 

다만 super()에 대한 이해가 잘 가지 않아 이부분은 내일 추가적으로 살펴봐야겠다

'TIL' 카테고리의 다른 글

240729  (0) 2024.07.29
240726  (0) 2024.07.26
240724  (1) 2024.07.24
220723  (0) 2024.07.23
240722  (0) 2024.07.22