알고보면코딩천재
try - catch 본문
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