[Java]/Program source (java)

150, 151 - Java 예외처리(Exception Handling) : 사용자로부터 음수를 입력받았을 때 프로그램이 종료되도록, new 객체생성 연산자로 예외를 생성. throw new Exception("value 값 오류")

Jelly-fish 2023. 9. 20. 15:53
/* ============================================
  ■■■ 예외 처리(Exception Handling) ■■■
=============================================*/

// Test151.java 파일과 비교~!!!

class Demo
{
	private int value;

	public void setValue(int value)
	{
		if (value <= 0)		// 매개변수로 음수를 넘겨주면 바로 메소드 종료하고 출력.
		{
			return;			// return을 포함한 가장 가까운 메소드 종료.(setValue())
							//-- 메소드 종료 → setValue()
							//-- 원래는 바로 종료되고 메소드가 동작하지 않도록 구성하려고 했는데
							//   0으로 초기화 되면서 0 값이 출력된다. → 원하지 않았던 상황.

		}

		this.value = value;	// 음수면 value 변수를 초기화하지 않는다.
	}

	public int getValue()
	{
		return value;
	}
}


public class Test150
{
	public static void main(String[] args)
	{
		Demo ob = new Demo();
		ob.setValue(-3);
		int result = ob.getValue();// 전역변수, Demo 인스턴스 생성하면서 value 값이 0으로 초기화 되므로.
		System.out.println(result);
	}
}
/* ============================================
  ■■■ 예외 처리(Exception Handling) ■■■
=============================================*/

// Test150.java 파일과 비교~!!!

// ※ throw
class Demo
{
	private int value;

	public void setValue(int value) throws Exception
	{

		if (value <=0)
		{
			// return;
			throw new Exception("value 는 0 보다 작거나 같을 수 없습니다.");
			// new 라는 객체생성연산자를 통해서 예외(Exception)를 생성하고 있는 구문이다.
			// ★☆ 『예외를 생성했으므로... 필수적으로 예외처리를 해 주어야 한다.』
		}

		this.value = value;			// 전역 변수 value를
									// 메소드의 매개변수로 전달된 int 값으로 초기화
	}

	public int getValue()			// value 값을 가져오는 메소드 (private 접근제어지시자로 설정되었으므로)
	{
		return value;
	}
}


public class Test151
{
	public static void main(String[] args) //throws Exception
	{
		Demo ob = new Demo();

		try
		{
			ob.setValue(-3);
			int result = ob.getValue();	
			System.out.println(result);
		}
		catch (Exception e)
		{
			System.out.println(e.toString());
		}
		
	}
}

// 실행 결과

/*
java.lang.Exception: value 는 0 보다 작거나 같을 수 없습니다.
계속하려면 아무 키나 누르십시오 . . .
*/