본문 바로가기
국비 과정/Java

국비 - 0720 ( 예외처리 , 쓰레드)

by 코딩호야 2022. 7. 20.

Exception Handling ( 예외처리 )

 

: 정상적으로 실행되는데 방해가 되는 에러들을
Exception (예외) 라고 말합니다

자바에서는 실행시(runtime) 발생하는 프로그램 오류를
error(에러) 와 exception(예외) 로 구분하여 처리합니다.

 

error 는 OutofMemoryError(메모리부족),
StackOverFlowError(스텍 오버플로우 에러) 와 같이 일단 발생하면 복구할수 없는 심각한 오류

exception는 발생하더라도 프로그래머가 이에대한 적절한 코드를 미리
작성하여 프로그램의 비정상적인 종료를 막는것을 말한다.
프로그램 코드에 의해 수습될수 있는 다소 미약한 오류

 

exception handling 정의 : 프로그램 실행시 발생할수 있는 예외의 발생에 대비한 코드를 작성하는것

exception handling 목적 : 프로그램의 비정상 종료를 막고 정상적인 실행상태를 유지할수 있도록 하는것이다.

 

try ~ catch ~ finally 는 특정한 동작을 지시하는 명령과 예외처리 코드를 분리시켜 처리하기 위한 키워드 입니다.

try {
... // 예외 발생가능한 구문
}

catch(예외타입 매개변수)
{
... // 예외가 발생하면 처리할 구문
}

finally {
... // 예외 발생과 상관없이 무조건 처리할 구문
}

 

Exception class

RuntimeException : 실행시간에 발생한 예외처리
IoException : 입출력에 관련된 예외처리
NoSuchMethodException : 메서드를 찾을수 없을때 예외 처리
InterruptedException : 인터럽트에 관련된 예외처리
ClassNotFoundException : 클래스를 찾을수 없을떄 예외처리

 

throw 는 예외를 고의적으로 발생시킬때 사용하는 키워드 입니다.
 

사용형식 

 

throw new 예외클래스 생성자

throws
- 프로그램을 작성할때 발생가능한 모든 예외를 찾아서 처리해야 합니다.
하지만 예외를 처리하기 곤란한 경우도 있습니다.
이럴때는 자신을 호출한 다른 메서드나 JVM (자바가상머신)에게
예외처리를 미룰수도 있습니다.


throws  키워드는 예외처리를 다른 쪽으로 떠넘기는 역할을 합니다.

 

형식
public void 메서드이름 (매개변수) throws 예외클래스1 [,예외클래스2,,,]
{
}

 

예외처리 관련 메서드

 

printStackTrace()  :  예외발생 당시의 호출스택에 있던 메서드정보와 예외메시지를 화면에 출력

getMessage()   :  발생한 예외 클래스의 인스턴스에 저장된 메시지를 얻을수있다.
 

예외처리 기본예제 

public class Exception_2 {
	public static void main(String[] args) {

		int number = 100;
		int result = 0 ;
		
		for(int i = 0; i< 10 ; i++) {
			try {
				result = number/(int)(Math.random()*10);
			} catch (ArithmeticException e) {    //number을 0으로 나눳을때 발생하는 예외를 처리해줌
				System.err.println(e.getMessage());
			}

			System.out.println(result );
		}
		
		
	}
}

 

getmessage() 메서드로      0으로 나눴을때 나오는 에러를 콘솔창에서    /by zero 로 표시된다.

 

Thread(쓰레드)

 

Thread 는 프로세스 안에서 순차적으로 작동하는 명령어의 집합입니다.
순차적으로 실행되는 명령어들은 하나의 실로 꿸수 있기 때문에 
Thread( 실 ) 이라고 부릅니다.

 

- 프로세스는 특정한 작업을 처리하기 위해 메모리에 적재되어 있는
프로그램이고 스레드는 명령의 제어 흐름입니다. 즉 명령어가 
실행되는 순서의 흐름입니다.

-스레드는 프로세스 내부에서 독립적인 작업을 처리하는 명령어의 집합니다.

스레드의 사용방법

 첫번째는 java.lang.Thread 클래스를 상속받아 스레드를 생성하여 사용하는 방법이고
 
 두번째는 java.lang.Runnable 인터페이스를 implements 해서 
 스레드를 생성하는 방법이다.
 
 // 단일상속만 허용하기 때문에 두가지 방법만 가능.