//Google AdSense

442p 예외처리

14.1 *예외의 원리 이해하기

444P 

runtime exception (uncheckexception)> ex) NullPointExc

check exception>try,catch

445p

 

447p finally


package kr.or.ksmart;

public class Exception1 {

	public static void main(String[] args) {
		/*
		 * RuntimeException - 언체크 예외
		 * 예외처리를 하지 않아도 작성이 가능한 코드
		 * 
		 * - RuntimeException 예외도 try, catch 구문으로 예외처리가 가능하다.
		 * RuntimeException 클래스를 확장시켜서 작성된 언체크 Exception 클래스를 말한다.
		 * 
		 * Throwable > Exception > RuntimeException
		 * Throwable	:	메세지 및 에러 위치 출력
		 * Exception	:	Throwable에 에러 문구 전달
		 */
		int n = 0;
		int n1 = 2 / n; //에러 강제 발생시키기
		System.out.println(n1);
		System.out.println("예외 발생  이후 출력 테스트");
	}

}

예외 발생 이후는 실행이 안됨.

package kr.or.ksmart;

public class Exception1 {

	public static void main(String[] args) {
		/*
		 * RuntimeException - 언체크 예외
		 * 예외처리를 하지 않아도 작성이 가능한 코드
		 * 
		 * - RuntimeException 예외도 try, catch 구문으로 예외처리가 가능하다.
		 * RuntimeException 클래스를 확장시켜서 작성된 언체크 Exception 클래스를 말한다.
		 * 
		 * Throwable > Exception > RuntimeException
		 * Throwable	:	메세지 및 에러 위치 출력
		 * Exception	:	Throwable에 에러 문구 전달
		 */
		try {
			int n = 0;
			int n1 = 2 / n; //에러 강제 발생시키기
			System.out.println(n1);
			
		} catch(ArithmeticException e) {
			System.out.println(e.getMessage()+"<<e.getMessage()");
			e.printStackTrace();
		}
		System.out.println("예외 발생  이후 출력 테스트");
	}

}

try,catch 구문을 통해 실행 가능

package kr.or.ksmart;

public class Exception1 {

	public static void main(String[] args) {
		/*
		 * RuntimeException - 언체크 예외
		 * 예외처리를 하지 않아도 작성이 가능한 코드
		 * 
		 * - RuntimeException 예외도 try, catch 구문으로 예외처리가 가능하다.
		 * RuntimeException 클래스를 확장시켜서 작성된 언체크 Exception 클래스를 말한다.
		 * 
		 * Throwable > Exception > RuntimeException
		 * Throwable	:	메세지 및 에러 위치 출력
		 * Exception	:	Throwable에 에러 문구 전달
		 */
		try {
			int[] array1 = new int[5];
			array1[6] = 2;
			} catch(ArrayIndexOutOfBoundsException e) {
			System.out.println(e.getMessage()+"<<e.getMessage()");
			e.printStackTrace();
		}
		System.out.println("예외 발생  이후 출력 테스트");
	}

}

package kr.or.ksmart;

public class Exception1 {

	public static void main(String[] args) {
		/*
		 * RuntimeException - 언체크 예외
		 * 예외처리를 하지 않아도 작성이 가능한 코드
		 * 
		 * - RuntimeException 예외도 try, catch 구문으로 예외처리가 가능하다.
		 * RuntimeException 클래스를 확장시켜서 작성된 언체크 Exception 클래스를 말한다.
		 * 
		 * Throwable > Exception > RuntimeException
		 * Throwable	:	메세지 및 에러 위치 출력
		 * Exception	:	Throwable에 에러 문구 전달
		 */
		try {
			String str= null;
			System.out.println(str.toString());
			
		} catch (NullPointerException e) {
			System.out.println(e.getMessage()+" <<NullPointerException e.getMessage()");
			e.printStackTrace();
		}
		System.out.println("예외 발생  이후 출력 테스트");
	}

}

 

453p throwable (class)


456p 예외던지기  throws 


MyException.java
package kr.or.ksmart;

/**
 * Exception을 상속받았기 때문에 Exception의 멤버를 전부 가지고 있다.
 * @author Administrator
 */
		
public class MyException extends Exception {
	
	public MyException () {
		super();
	}
	
	public MyException (String msg) {
		super(msg + " < My 클래스의 필수값  누락 MyException");
	}
	
}
My.java
package kr.or.ksmart;

public class My {
	private String name;
	
	public My (String name) throws MyException {
		if(name == null || "".equals(name)) {
			throw new MyException(name + " 인수값 null/공백");
		}
	}
}
Exception03.java

>> My() 생성자 메서드에 throws 키워드가 붙어있기 때문에 오류 발생.

throws, try/catch를 사용하여 에러를 제거할 수 있음.

Exception03.java
package kr.or.ksmart;

public class Exception03 {

	public static void main(String[] args) {
		My my = null;
		try {
			//my = new My(""); 생성자 메서드에서 공백 혹은 null일 때 예외 발생
			my = new My("홍길동");

			
		} catch (MyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		try {
			my.setMyAge(0); // 값이 0일 경우 강제 예외 발생
		} catch (MyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}

}


/**
* 실습1. Member 클래스, MemberException 클래스를 선언하고
* Member클래스의 userName의 인수값이 null 혹은 공백일 경우 예외가 발생되도록 구현하여라.  
*/
MemberException.java
package kr.or.ksmart;

public class MemberException extends Exception {
	public MemberException () {
		super();
	}
	public MemberException (String msg) {
		super(msg + " < Member클래스 필수값 누락");
	}
}
Member.java
package kr.or.ksmart;

public class Member {
	private String userName;
	public Member (String userName) throws MemberException {
		if(userName == null || "".equals(userName)) {
			throw new MemberException(userName + "인수값 null/공백");
		}
	}
}
ExceptionEx01.java
package kr.or.ksmart;

public class ExceptionEx01 {

	public static void main(String[] args) {
		/**
		 * 실습1. Member 클래스, MemberException 클래스를 선언하고
		 * Member클래스의 userName의 인수값이 null 혹은 공백일 경우 예외가 발생되도록 구현하여라.  
		 */
		Member m = null;
		try {
			m = new Member("");
		} catch (MemberException e) {
        	e.printStackTrace();
		}
	}
}
실행결과


 

'JAVA' 카테고리의 다른 글

[JAVA Basic] Generic  (1) 2020.05.22
[JAVA Basic] Singleton Pattern  (0) 2020.05.20
컨트롤러, 서비스, dao 및 트렌젝션  (0) 2020.05.14
DBCP 실습  (0) 2020.05.14

+ Recent posts