알고보면코딩천재

try - catch 본문

Java

try - catch

알코천 2022. 8. 19. 11:10

JVM은 static 공간에 있는 main을 찾으니까

상속은 타입을 일치시키기 위해 사용

static은 클래스 변수

 

일단 기본적인 문법 이해하기.

모르면 공부하기

package except;

// 지구인은 아시아인과, 아프리카인, 한국인의 구현체가 있습니다.
abstract class 지구인{
   abstract String getName();
}
class 아시아인 extends 지구인{
   String getName() {
      return "아시아인";
   }
}
class 아프리카인 extends 지구인{
   String getName() {
      return "아프리카인";
   }
}
class 한국인 extends 아시아인{
   String getName() {
      return "한국인";
   }
}

interface SingleTicket {
   void start(지구인 s);
}

class 우주선 {
   protected void 화성으로(지구인 s) { // 자식만 접근할 수 있는 메서드 protected
      System.out.println("화성으로 "+s.getName()+"이 날라갑니다.");
   }
}

// 야 니가 우주선을 날리고 싶으면 SingleTicket을 구현해서 start를 호출해
// 대신 start 내부는 니가 구현해야 하는데 
// 우주선을 상속받아서 그 친구가 들고 있는 메서드(화성으로)에 s만 넣어주면 돼.

public class TryEx01 extends 우주선 implements SingleTicket{

   @Override
   public void start(지구인 s) {
      화성으로(s);
   }
   
   public static void main(String[] args) {
      지구인 s1 = new 한국인();
      
      TryEx01 t1 = new TryEx01();
      t1.start(s1);
   }




}

런타임때 발생할 수 있는 모든 오류를 잡아 놓는 거 

package except;


class 동물{}
class 강아지 extends 동물{}
class 말티즈 extends 강아지{}
class 치와와 extends 강아지{}


public class TryEx02 {

	public static void main(String[] args) {
		동물 s1 = new 강아지(); // 강아지, 동물
		
		try {
			강아지 s2 = (말티즈)s1;
		} catch (ClassCastException e) {
			System.out.println("클래스 다운 캐스팅시 문제 발생");
		}
		
		
		for(int i =0; i<10; i++) {
			System.out.println(i);
		}
	}

}

package except;


class 동물{}
class 강아지 extends 동물{
	void print() {
		System.out.println("강아지");
	}
}
class 말티즈 extends 강아지{}
class 치와와 extends 강아지{}


public class TryEx02 {

	public static void main(String[] args) {
		동물 s1 = new 강아지(); // 강아지, 동물
		강아지 s2 = null;
		
		try {
			s2 = (말티즈)s1;
		} catch (ClassCastException e) {
			s2 = new 말티즈();
			// 문자전송
			// 파일로 기록
			//System.out.println("클래스 다운 캐스팅시 문제 발생");
			
		}
		
		s2.print();
		
		for(int i =0; i<10; i++) {
			System.out.println(i);
		}
	}

}

Exception 종류 두가지

1. 컴파일시에 잡히는 예외

2. 런타임시에 잡히는 예외 ->RuntimeException

 

package except;


class 동물{}
class 강아지 extends 동물{
	void print() {
		System.out.println("강아지");
	}
}
class 말티즈 extends 강아지{}
class 치와와 extends 강아지{}


public class TryEx02 {

	public static void main(String[] args) {
		동물 s1 = new 강아지(); // 강아지, 동물
		강아지 s2 = null;
		
		try {
			s2 = (말티즈)s1;
		} catch (RuntimeException e) {
			System.out.println(e.getMessage());
			s2 = new 말티즈();
			// 문자전송
			// 파일로 기록
			//System.out.println("클래스 다운 캐스팅시 문제 발생");
			
		}
		
		s2.print();
		
		for(int i =0; i<10; i++) {
			System.out.println(i);
		}
	}

}

 


메서드 뒤에 throws있으면 

내가 try-catch를 짜야한다.

package except;

class Car {
	String name = "소나타";

	void namePrint() {
		System.out.println(name);
	}
}

public class TryEx04 {

	public static void start(Car c) throws RuntimeException {

		c.namePrint();

	}

	public static void main(String[] args) {
		try {
			start(null);
		} catch (Exception e) {
			System.out.println("내가 처리할게");
		}

	}

}

 

 

빨간줄이 뜨는 것들만 Exception으로 감싸고

빨간줄 뜬거는 다 Exception으로 바꿔라

런타임 RuntimeException -> 코드실행했다 터지면

Exception/RuntimeException 구분할 줄 알아야한다.

 

 

'Java' 카테고리의 다른 글

크롤링  (0) 2022.08.22
스트림, 버퍼, BufferedWriter, BufferedReader  (0) 2022.08.22
Service  (0) 2022.08.17
UPDATE  (0) 2022.08.16
JavaDB통신 Entity, ArrayList  (0) 2022.08.16
Comments