성장 일기/쌍용교육센터 / / 2023. 1. 5. 10:51

0105/Font, 예외 처리

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git 에 올려두었습니다.

 

Font

Font는 글꼴을 변경할 때 사용하고 사용자에게 직접 보여지지 않는 컴포넌트이다.

java.awt 패키지에서 제공하고 저작권이 있다.

사용법은 아래와 같다.

//1.Font클래스 생성
Font font = new Font(글꼴종류, 스타일, 크기);
//글꼴종류 AWT의 컴포넌트에서는
//Dialog, DialogInput, Monospaced, Serif, or SansSerif 5가지 글꼴만 표현할 수 있다.
//스타일의 Constant : PLAIN, BOLD, ITALIC, BOLD|ITALIC

//2. 폰트 적용
컴포넌트.setFont(font객체);

//3. 글자색 변경 - Color  클래스 사용

//Color객체 두가지

//-1.  Color상수명 => 다양한 색을 표현할 수 없다.
//-2. 다양성을 표현하기 위해 RGB를 사용한다.

Color c = new Color(16진수 RGB); //0x000000 ~ 0xFFFFFF F두개씩 각각 R, G, B를 나타냄

//글자색
컴포넌트.setForeground(Color객체)

//바닥색                          
컴포넌트.setBackground(Color객체)

 

Exception Handling

Exception handling은 프로그램에서 발생하는 가벼운 error에 대한 대비 코드를 만드는 것이다.

error는 심각한 문제, 프로그램 동작 중에

error가 발생하면 다음으로 진행할 수 없다.

 

Exception은 가벼운 문제, 프로그램 동작 중에

Exception이 발생하면 처리한 후 다음으로 진행할 수 있다.

개발자는 예외상황을 예측해야 한다.

 

Compile Exception, RuntimeException 두 가지 종류의 예외가 있다.

 

Complie Exception

Compile Exception는 bytecode를 제대로 생성하지 못할 확률이 있는 코드에서 발생하고

개발자가 반드시 try~catch로 예외코드를 묶어야 하는 예외이다.

eclipse가 예외상황을 알려준다.

 

Runtime Exception

RuntimeException는 CPU를 사용하거나, 값을 저장한 코드에서 발생하고

개발자가 try~catch로 묶지 않아도 에러가 발생하지 않는 예외이다.

eclipse가 예외상황을 알려주지 않고 개발자가 인지하고 처리해야 한다.

 

예외처리 클래스의 상속도

Throwable에서 두 가지 Error, Exception로 나뉜다.

 

Error에는 AWTError, StackOverFlowError, VirtualMachineError 등이 있다.

프로그램 실행 도중 error가 발생하면 그 프로그램을 더 이상 동작할 수 없다.

 

Exception은 RuntimeException,ClassNotFoundException, InterruptedException,

IOException, FileNotFoundException, SQLException 등이 있다.

 

RuntimeException 중에서 많이 발생하는 종류로는 아래와 같다.

ArithmeticException : 수에 대한 예외 0으로 나눌 때 발생한다.

ArrayIndexOutOfBoundsException : 배열의 인덱스가 없을 때 발생

NullPointerException : 객체를 생성하지 않고 사용할 때

NumberFormatException : 숫자형태가 아닌 문자열을 변환할 때

ClassCastException : 클래스를 강제형 변환할 때

 

예외처리

예외처리할 때는 try~catch~finally, throws, throw 3가지로 한다.

 

try~catch~finally

문법으로는 아래와 같다.

try {
		//예외발생 예상코드    Runtime Exception, Compile Exception 발생

		}catch(예외처리 클래스 객체명) {
		System.out.println("사용예) java UseRuntimeException 값1 값2");
		}catch(예외처리 클래스 객체명) {
			//예외가 발생했을 때 실행될 코드 정의
			}catch(예외처리 클래스 객체명) {
				//예외가 발생했을 때 실행될 코드 정의
			}catch(예외처리 클래스 객체명) {
				//예외가 발생했을 때 실행될 코드 정의
			} finally {
				//반드시 실행되어야할 코드 정의	
			}
            //자식은 특정 예외상황만 처리할 수 있다.
            //부모는 모든 예외 상황을 잡을 수 있다.

순서는 아래와 같다.

1. 예외발생 예상코드에서 예외가 발생하면 코드 실행을 멈춘다.

2. 예외에 해당하는 예외처리 클래스가 속한 catch로 건너뛰어 실행한다.

3. 그 후에 try를 빠져 나가는데 finally에 속한 코드가 있으면 실행하고 나간다.

 

위와 같이 여러 개의 multi catch인 상황에서는

예외처리 클래스의 상속관계에서 자식이 먼저 정의되어야 한다.

그렇지 않고 부모 클래스가 먼저 정의가 되면 발생된 예외를 부모가 잡기 때문에

하위 자식 예외들은 예외를 잡을 수가 없어 예러가 발생한다.

그래서 다중 catch 상황에서는 예외처리 클래스의 상속관계를 잘 파악하여

부모가 위로 올라오지 않도록 주의하여 코딩해야 한다.

 

예외 메시지 출력

예외 메시지 출력에서 예외출력 스트림은 아래와 같이 사용한다.

System.err.println("에러 메시지"); //이클립스에서는 출력 메시지를 빨간색으로 출력한다.

err 스트림은 out 스트림보다 출력이 늦을 수 있다.

out은 입력 값을 바로 출력하지만 err 예외가 발생하면

Stack에 저장되고 Stack에 저장된 값을 꺼내와서 출력한다.

 

예외처리클래스와 예외메시지 얻는 방법은

예외처리객체명.toString()을 사용하면 되고

 

stack에 저장된 모든 예외메시지 얻어 출력하고 싶으면

예외처리객체명.printStackTrace();를 사용하면 된다.

 

배우고 느낀점

오늘은 컴포넌트에 폰트를 변경하는 법과 예외 처리에 관련된 클래스,

예외 처리를 하는 방법에 대해 배웠다. 예외 처리에 대해 배웠지만

아직 많이 사용하지 않아보아서 감이 잘 안잡힌다.

굳이 예외처리를 해야 하나? 소스 코드를 잘 짜면 되지 않을까?

라는 생각을 했지만 실제로는 그렇지 않다고 한다.

그래서 지속적으로 사용해 컴파일 예외일 때

try catch로 예외처리를 하는 법 등 공부를 해보자

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0109/Stream, File  (0) 2023.01.09
0106/예외 처리, Stream  (0) 2023.01.06
0104/Swing Component  (0) 2023.01.04
0103/Swing Component  (0) 2023.01.03
0102/Swing Component  (0) 2023.01.02
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유