article thumbnail image
Published 2022. 8. 18. 13:55
반응형

프로그래밍을 하다보면 예기치 못하게 에러나 오류나 버그가 있을 수 있습니다 

사람이라는 존재가 어디까지나 모두 다 예측 하기란 참 어려운 일이 아닐 수 없겠죠

그렇기에 예상치 못한 오류가 발생 했을 때를 위해서 사용하는 문법이 

예외처리 입니다 

 

간단한 코드를 살펴보겠습니다 

public class blogTest {

	public static void main(String[] args) {

		Calcu ca = new Calcu();

		//더하기
		System.out.println(ca.su(10, 0));
		
		//곱하기
		System.out.println(ca.multi(10, 0));

		//나누기
		System.out.println(ca.div(10, 0));
		
		
	}

}

 

언뜻 보기엔 별 문제 없어보이죠

그렇지만 에러가 발생해요 문법상으로는 문제가 없는 코드가 확실한데 왜 에러가 발생하고 

왜 문법상으론 문제가 없을까요 바로 0은 정수이기때문입니다 상관이 없어요 들어가도 

받는 매개변수 타입이 int 이고 0은 충분히 들어갈 수 있는 값이니까요 

 

그치만 막상 실행시키면 에러죠 왜 그렇겠습니까 바로 0으로 나눴기 때문입니다 

숫자를 0으로 나누는게 가능하지 않기 때문입니다

 

그럼 이런 생각을 할지도 모르겠네요 0이면 값을 치환해주고 0이 아니면 진행 시키는건

어떨까요 라고 생각하겠죠 물론 맞는 말입니다 우리는 프로그래밍을 할 때 사용자가 

요청하며 보낸 데이터를 검증해야합니다 꼭 해야하는것입니다 정상적인 값인지 

아닌지 판별하고 서버에 요청을 해야합니다 그치만 우리는 예상치 못한 값에 당황

할 수도 있습니다

 

그럴때 쓰는것이 바로 예외 처리이며 그 문법은 아래와 같습니다

 

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at studyProject/studyProject.Calcu.div(blogTest.java:20)
	at studyProject/studyProject.blogTest.main(blogTest.java:39)

위 코드를 실행했을 때 나오는 에러였습니다 대충 유추만 해보십쇼 by zero 보이십니까 0이기

때문에 그렇다는건데 확실히 보기가 좀 어렵죠 이걸 우리는 잘 알아먹을 수 있도록 변경 해줍니다

 

	public static void main(String[] args) {

		Calcu ca = new Calcu();

		try {
			
			//더하기
			System.out.println(ca.su(10, 0));
			
			//곱하기
			System.out.println(ca.multi(10, 0));
			
			//나누기
			System.out.println(ca.div(10, 0));
			
		} catch (Exception e) {
			System.out.println("Calcu 클래스 메서드중 하나에서 오류가 발생했음 내용은 " + e.getMessage());
			//e.printStackTrace();
		}
		
		
	}

이렇게 작성을 하면 오류는 안납니다

왜 이런 행동을 해야하냐 싶을건데 여러분 우리가 만드는건 24시간 365일 항상 정상적인 상태를 유지

해야하는 프로그램들이 많을겁니다 홈페이지만 해봐도 보세요 간혹가다 큰 이슈가 있어서 잠시 

사이트를 내리는 경우가 있긴 하지만 거의 그렇지 않죠?

왜 그렇겠습니까 오류가 나도 그냥 일단 다른 부분들은 실행이 돼야 하기 때문이에요 

그 작은 소스 하나 때문에 프로그램 전체가 다 안돌아간다고 생각해보세요 막막합니다 참담하구요

그래서 예외처리를 해주도록 하는것을 추천하고 필수입니다 

 

그리고 e.printStackTrace(); 메서드는 프로그램의 스택을 전체적으로 보여줍니다 호출 순서라고 

생각하셔도 됩니다 이것도 같이 뿌려주어야 어느 클래스 어느줄에서 오류가 났는지 알 수 있어요 

 

제일 아래에 깔린것이 먼저 실행됐었고 파란색 부분을 클릭하면 해당 코드로 이동합니다

아 여기서 났구나 그 다음 스택은 뭐지 하며 눌러보면 

좀 더 상세하게 보여줍니다 저 코드에서 에러가 났구나 알 수 있는것이죠 

 

이처럼 try{    내용내용내용  }  안에는 예외가 발생 할 수도 있는 프로세스가 들어가야합니다 

그리고 catch (Exception e){ 예외가 발생 했을 때 실행해야하는 프로세스를 넣어줍니다   }  

그래야 해당 코드 이외의 다른 기능들은 정상 작동 할 것이기 때문입니다 ㅎㅎ 

 

다음 글 내용은 예외처리를 더 이어서 알려드리겠습니다 

내용이 조금 많고 그만큼 중요한 부분입니다

반응형

'Developer > Java' 카테고리의 다른 글

[java] 제네릭  (0) 2022.08.25
[java]컬렉션즈 프레임워크  (0) 2022.08.22
[java]추상(abstract)  (0) 2022.08.18
[java] 접근제어자  (0) 2022.08.16
[java]오버라이딩  (0) 2022.08.03
복사했습니다!