앱 만들기/안드로이드

자바 예외처리가 필요한 이유

나도 처음이야 2022. 3. 12.

자바에서는 프로그램 예외를 어떻게 잡아낼까요?

컴파일 과정에서 오류로 발견되는 것이 가장 일반적 입니다. 자바에서는 일반적으로 예외가 발생할 가능성이 있는 코드를 발견하면 컴파일 단계에서 강제적으로 예외코드를 작성하도록 요구합니다. 이런 에러를 자바에서는 "일반 예외"라고 말합니다. 하기 코드가 그런 경우죠.

	Class test = Class.forName("java.lang.string");

클래스 명이 없을 수 도 있기에 미리 컴파일 과정에서 하기와 같은 exception 처리를 하도록 에러메시지를 받습니다.

이런 경우는, 개발자가 다행히도 프로그램 오류를 컴파일 단계에서 방어 할 수 있습니다.

 

예외처리 중 다른 하나는 실행 과정에서 발생하는 에러 입니다.

바로 "실행 예외"입니다. 프로그램 구동 중 개발자가 생각지 못한 순간 발생하는 오류로 앱이 죽는 현상이 발생하죠.

하기 코드는 실행 시 예외를 발생시키는 코드입니다.

String data = null;
System.out.println( ""+data.toString() );

NullPointer Exception 예외이며, data 인스턴스 변수가 null이니 당연한 결과인 것입니다.

실무에서도 실제 이런 경우가 종종 발생합니다. 분명 인자가 들어와야 하는데, 서버 네트워크 오류 혹은 기타오류로 앱이 죽는 경우가 발생하죠.

 

서비스되고 있는 앱이 죽으면 안 되기에,,, 예외가 발생해도 앱이 죽지 않고 동작하도록 하려면..

어떻게 해야 할까요? 바로 예외처리 코드를 추가하는 것 입니다.

 String data = null;
 try{
	 System.out.println( ""+data.toString() );
 	}catch(Exception e) {
	 System.out.println( "죽지마");
}

try / ctach 예외처리 코드룰 추가되면, 실행 예외가 발생했을 때 catch() 문의 코드가 실행되며 앱은 죽지 않습니다.

물론, 원래의 정상적인 동작을 하지는 않겠지만 예외처리를 통해 앱은 죽지 않을 것이고 예외에 대처할 수 있는 여러 액션 등을 구현 할 수 있습니다.

"일시적으로 접속할 수 없습니다" 이런 거 말이죠 ^^

 

안드로이드에서도 예외 코드는 동일한 루틴을 따릅니다.

그렇기에 앱이 죽지 않기 위해서는 "실행예외"에 예외처리 루틴을 추가해서 예외처리를 해주면 됩니다.

커피 한잔과 함께하는 즐거운 개발이 되시길 바랍니다.

감사합니다.

* 자바에서 에러와 예외의 차이점?

# 자바에서 에러란?

  하드웨어의 오작동으로 S/W 의 실행오류가 발생하는 것을 말한다.

 

# 자바에서 예외 란?

  에러를 제외한 S/W프로그램의 예기치 않는 오류를 말한다.

  즉, 개발자의 로직적인 프로그래밍 실수를 뜻한다.

반응형

댓글