package Demo4;

public class Animal {

}
package Demo4;

public class Cat extends Animal {

}
package Demo4;

public class Dog extends Animal {	

}
package Demo4;

public class AnimalApp {

	public static void main(String[] args) {
		Animal a = new Dog();
		Animal b = new Cat();

		Dog c = (Dog) a;
		Cat d = (Cat) b;
		
		Dog e = (Dog) b; // 형 변환 예외 발생
		
	}
}

'자바 > exception' 카테고리의 다른 글

demo3  (0) 2019.06.10
demo2  (0) 2019.06.10
demo1  (0) 2019.06.10
package Demo3;

public class RuntimeExceptionDemo1 {

	public static void stringToUpper(String str) {
		if (str != null) {
			System.out.println(str.toUpperCase());
		}
	}
	
	
	
	public static void main(String[] args) {
		// NullPointException
		// 객체를 참조하지 않는 참조변수(null값을 가지는 참조변수)로
		// 객체의 속성이나 기능을 사용할 때 발생되는 예외다.
		
		String text = null;
		//System.out.println(text.length());
		
		RuntimeExceptionDemo1.stringToUpper(text);
		
	}
}
package Demo3;

public class RuntimeExceptionDemo2 {
	
	public static void main(String[] args) {
		
		// ArrayIndexOutOfBoundException : 배열의 인덱스 범위를 벗어났을 때 발생
		// StringIndexOutOfBoundsException : 문자열의 인덱스범위를 벗어났을 때 발생
		
		String[] names = {"김유신", "강감찬", "이순신"};
		// System.out.println(names[3]);
		
		String text = "abc";
		String subText = text.substring(2, 4);
	}
}
package Demo3;

public class RuntimeExceptionDemo3 {

	public static void main(String[] args) {
		// NumberformatException : 문자열을 숫자로 바꿀 때 숫자로 변환할 수 없는 문자열이 포함되어 있으면 발생
		// int Integer.parseInt(String numberText)
		// double double.parseDouble(String numberText)
		
		String text1 = "1234";
		int number1 = Integer.parseInt(text1);
		System.out.println(number1 * 3);
		
		String text2 = "1234a";
		String text3 = " 1234";
		
		int number2 = Integer.parseInt(text2);
		System.out.println(number2 * 3);
	}
}
package Demo3;

import java.util.Scanner;

public class RuntimeExceptionDemo4 {

	public static void main(String[] args) {
	
		Scanner scanner = new Scanner(System.in);
				
		System.out.println("몸무게 입력> ");
		String value1 = scanner.next();

		System.out.println("키 입력> ");
		String value2 = scanner.next();

		double weight = Double.parseDouble(value1);
		double height = Double.parseDouble(value2)/100;

		double bmi = weight / (height + height);
		System.out.println("bmi 지수 : " + bmi);
		
		if(bmi > 35) {
			System.out.println("고도 비만");
		} else if (bmi > 30) {
			System.out.println("중등도 비만");
		} else if (bmi > 25) {
			System.out.println("경도 비만");
		} else if (bmi > 23) {
			System.out.println("과체중");
		} else if (bmi > 18.5) {
			System.out.println("저체중");
		}
		
		scanner.close();
	}
}
package Demo3;

public class RuntimeExceptionDemo5 {

	public static void main(String[] args) {
		
		String text = "dddd";
		
		int value = StringUtils.stringToInt(text);
		System.out.println("숫자값 : " + value);
	}
}
package Demo3;

public class RuntimeExceptionDemo6 {

	public static void main(String[] args) {
		
		// arithmaic Excpetion 0으로 어떤 수를 나눌 때	}

		System.out.println(3/0);
	}
}
package Demo3;

public class StringUtils {

	public static int stringToInt(String text) {
		int value;
		try {
			value = Integer.parseInt(text);
			
		} catch (NumberFormatException e) {
			value = 0;
		}
		return value;
	}
}

 

'자바 > exception' 카테고리의 다른 글

demo4  (0) 2019.06.10
demo2  (0) 2019.06.10
demo1  (0) 2019.06.10
package Demo2;

import java.io.FileWriter;
import java.io.IOException;

public class ExceptionDemo1 {

	public static void main(String[] args) {
		
		// 예외 정보 얻기, 출력하기
		try {
			FileWriter writer = new FileWriter("c:/sample.txt");
			writer.write("예외정보 얻기");
			writer.flush();
			writer.close();
		} catch (IOException e) {
			System.out.println("예외 발생!");
			String message = e.getMessage();
			System.out.println("예외 정보 : " + message);
			
			String text = e.toString();
			System.out.println("예외 정보 : " + text);
			
			e.printStackTrace();
		}
	}
}
package Demo2;

public class MyexceptionDemo1 {
	/**
	 * 문자열 배열을 전달받아서 화면에 배열의 내용을 출력하는 메소드
	 * @param names 문자열 배열
	 * @throws MyException 배열이 null이거나 배열의 길이가 0인 경우 예외 발생
	 */
	// 사용자정의 일반예외 <-- Exception 클래스를 상속받으면 일반예외가 된다.
	// 일반예외는 예외처리가 필수다.
	public static void printArray(String[] names) throws MyException {
		if (names == null || names.length == 0) {	// 예외 상황
			throw new MyException("null인 배열이 전달되었습니다.");
		}
		for (String item : names) {
			System.out.println(item);
		}
	}
	public static void main(String[] args) {
		
		String[] teamNames = {"영업팀", "서울팀", "경기팀"};
		String[] studentNames = null;
		try {
			MyexceptionDemo1.printArray(teamNames);
			MyexceptionDemo1.printArray(studentNames);

		} catch (MyException e) {
			e.printStackTrace();
		}
	}
}
package Demo2;

public class MyException extends Exception {
	public MyException() {
		
	}
	
	public MyException(String message) {
		super(message); 			// 예외 정보로 저장된다(Exception의 생성자 호출).
		
	}
}
package Demo2;

// 사용자정의 실행예외 <-- RuntimeException을 상속받으면 실행예외가 된다.
// 실행예외는 예외처리가 선택이다.
public class MyRuntimeException extends RuntimeException {

	public MyRuntimeException() {
		
	}
	
	public MyRuntimeException(String message) {
		super(message);
	}
}
package Demo2;

public class MyRuntimeExceptionDemo1 {

	public static void printArray(String[] items) {
		if (items == null || items.length == 0) {
			throw new MyRuntimeException("배열이 null이거나 길이가 0입니다.");
		}
		
		for (String item : items) {
			System.out.println(item);
		}
	}
	
	public static void main(String[] args) {
		String[] teamNames = {"영업팀", "서울팀", "경기팀"};
		String[] studentNames = null;
		
		MyRuntimeExceptionDemo1.printArray(teamNames);
		MyRuntimeExceptionDemo1.printArray(studentNames);
	}
}

'자바 > exception' 카테고리의 다른 글

demo4  (0) 2019.06.10
demo3  (0) 2019.06.10
demo1  (0) 2019.06.10
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class ExceptionDemo1 {
	
	public static void main(String[] args) {
		// 일반 예외가 발생하는 경우 예외 처리하기
		try {
		System.out.println("try 블록의 수행문 시작");
		FileWriter writer = new FileWriter("sample.txt");
		writer.write("연습");
		writer.flush();
		writer.close();
		System.out.println("try 블록의 수행문 종료");
		} catch (IOException e) {
			System.out.println("파일 생성 혹은 파일 기록 중 오류가 발생하였습니다.");
			System.out.println(e);
			System.out.println("catch 블록의 수행문");
		
		} finally {
			System.out.println("finally 블록의 수행문");
		}
	}
}
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class ExceptionDemo2 {

	public static void main(String[] args) throws IOException {
		
		FileWriter writer = new FileWriter("sample.txt");
		writer.write("연습");
		writer.flush();
		writer.close();
	}
}
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class ExceptionDemo3 {

	public static void method1() throws IOException {
		FileWriter writer = new FileWriter("sample.txt");
		writer.write("예외 떠넘기기");
		writer.flush();	
		writer.close();
	}
	public static void method2() throws ClassNotFoundException {
		Class.forName("demo1.ExceptionDemo1");	// demo1.ExcpetionDemo1 설계도를 메모리에 로딩시킨다.
	}
	
	// 메소드1과 2가 처리를 위임한 예외를 다시 떠넘긴다.
	public static void method3() throws IOException, ClassNotFoundException {
		ExceptionDemo3.method1();
		ExceptionDemo3.method2();
	}
	//메소드 1과 2가 처리를 위임한 예외를 try ~ catch로 처리한다.
	public static void method4() {
		try {
			ExceptionDemo3.method1();
			ExceptionDemo3.method2();
			
		}
		catch (IOException e) {
			
		} catch (ClassNotFoundException e) {
			
		}
	}
	
	
	//메소드 1과 2가 처리를 위임한 예외를 try ~ catch로 처리한다.
	public static void method5() {
		try {
			ExceptionDemo3.method1();
			ExceptionDemo3.method2();
			
		}
		catch (IOException | ClassNotFoundException e) {
			
		} 
	}


	
	//메소드 1과 2가 처리를 위임한 예외를 try ~ catch로 처리한다.
	public static void method6() {
		try {
			ExceptionDemo3.method1();
			ExceptionDemo3.method2();
			
		}
		catch (Exception e) {	// Exception 타입의 변수로 선언하면 try블록에서 발생되는 모든 예외를
								// 캐치할 수 있다.				
		} 
	}

	public static void method7() {
		try {
			ExceptionDemo3.method1();
			ExceptionDemo3.method2();
			
			
		} catch (ClassNotFoundException e) {
			
		} catch (IOException e) {
		} catch (Exception e) {
		}	// 마지막 catch에서는 Exception 타입의 변수로 선언함으로써 미처 예상하지 못했던 예외도 캐치를 할 수 있도록 한다.
	}

	
	public static void main(String[] args) {
		
	}
}
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class exceptionDemo4 {
	public static void method1() {
		 try {
			 FileWriter writer = new FileWriter("sample.txt");
			 writer.write("예외바꾸기");
			 writer.flush();
			 writer.close();
			 
		 } catch (IOException e) {
			 
		 }
	}
	
	public static void method2() {
		
	}
	
	public static void main(String[] args) {
		
	}
}
package Demo1;

import java.io.FileWriter;
import java.io.IOException;

public class HTAException extends Exception {
	public static void method1() throws HTAException {
		try {
			FileWriter writer = new FileWriter("sample.txt");
			writer.write("예외바꾸기");
			writer.flush();
			writer.close();
		} catch (IOException e) {
			throw new HTAException();	// throw 예외 발생 시키기
		}
	}
	public static void method2() throws HTAException {	// 3. 2번에서 발생시킨 예외를 떠넘긴다.
		try {
			Class.forName("demo1.HTAException");
			
		} catch (ClassNotFoundException e) {	// 1. try 블록에서 발생한 예외를 캐치
			throw new HTAException();			// 2. HTAException 예외를 생성해서 발생시킴
		}
	}
	
	public static void main(String[] args) {
		try {
			method1();
			method2();
		} catch (HTAException e) {	// 4. 처리를 위임받는 예외의 종류가 HTAException 으로 줄어들게 된다.
		}
	}
}

 

'자바 > exception' 카테고리의 다른 글

demo4  (0) 2019.06.10
demo3  (0) 2019.06.10
demo2  (0) 2019.06.10

+ Recent posts