728x90

 

class AA{
public void sub() { }
}
class BB extands AA {
public void sub() throws Exception{ }
}
오버라이드된 메소드에는 throws를 하면 안된다.
그럼 부모의 메소드까지 전부다 throws해야하기 때문이다.


Component(도구)
ex)연필
   Button, TextField, Panel,...


Container
ex)필통
    Frame, Dialog
근데 Conainer에도 크고작은게 있어서 Dialog안에 Frame을 담을 수 있다.

 


예외처리

 

만약 사자를 없애면

이런 오류가 나온다. 1번방에 데이터가 없다는 오류다.

try~ catch

앞서 arg[0]값에 argument로 호러랑이를 저장했고 args를 num1에 저장했다.

num1은 String이고 우리가 입력한건 int이기 때문에 /를 하면 타입이 달라 오류가 나온다.

근데 이런 식으로 실행부에 try로 잡고 catch로 오류 메세지를 출력하는 Number~~~어쩌고 를 통해 
try에서 오류를 감지하면 catch부분에서 빨간 오류메세지가 아닌 우리가 입력한 메세지를 출력할 수 있다.

이렇게 메시지를 출력한다.

근데 수학적인 오류는 위의 방법으로는 오류가 나온다


그리고 이 상태에서 Argument에 호러랑이대신 25를 넣고 Sc를 통해 입력값에 0을 넣으면 

0/25가 되어 연산오류가 난다.

cathch를 하나 더 잡아주고 Ari~~를 이용하면

빨간 메세지가 아닌 우리가 정한 오류메세지를 출력할 수 있다.

근데 이거 안해도

에(double)로 형변환 넣어주면 오류안나고 계산한다.

DB처리할 때 사용하는 finally라는게 있다

작동 순서는 이렇고

이렇게 선언해주면

이렇게 결과를 도출한다.

지금까지의 Argument상태

이 부분을 문자로 바꾸고 실행해도 finally덕분에 오류가 안난다.

 

ㅇㅇㅇㅇㅇㅇㅇ

먼저 구구단을 만든다

bufferedReader부분의 예외처리가 전에 배운거랑 쪼금 다르니 읽어보기

try에서 에러를 감지하면
catch 코드가 강제로 빨간 글씨로 오류를 출력한다
throw new Exception()은 강제로 오류를 일으키는 메소드다.

e.printStackTrace(); 코드 가 오류를 추적해서 출력한다.

 
 

 


 

예외처리2

클래스를 만들고

앞서만든 클래스에 저렇게 넣어주면

오류가 좀 다르게 나온다.

그리고

저 부분을 사용하면

오류부분에 오류나는 클래스명까지 나온다.

 


 

Thread

작동 순서

스레드 상속받고 new로 스레드 3개 생성
근데 run은 우리가 하는게 아니라 운영체재가 한다.


결과
결과부분에서 [Thread-0, -1, -2]는 스레드의 이름이다
스레드에 우리가 직접 이름을 입력할 수 있다.

스레드에 이름넣기

스레드가 몇번째 인지 알아보기

스레드를 멈추는, 죽이는 방법도 있다


join()을 넣는건데 오류가 나기 떄문에 try, catch로 잡아보자
 우선순위를 줄 수도 있는데 정확하지가 않은것 같다



 



시계만들기

먼저 창을 만든다

paint()메소드를 이용해 시간을 출력한다. 두가지 방법이 있다.


폰트도 변경해주자. 
지금 상태는 한번 찍히고 갱신이 되지 않고 있다.
이제 시간이 계속 바뀌게 만들어보자
이제 시계부분으로 돌아가서 시간을 계속 갱신한다고 while문을 사용하면 시간이 바뀌긴 하는데
cpu가 그 while부분에 빠져있어서 닫는버튼이 안먹힌다.

한번에 여러 동작을 못하는 것이다. 이때 스레드가 필요

우선 implement를 하자. runnable이 스레드

다음 오버라이드 ㄱㄱ

스레드 생성, 시작

이렇게 paint()에 while을 지우고 run에 paint를 다시 부르는 repaint를 작성한다.
이렇게하면 시계가 나오는데 너무 빨라서 시간이 안보인다.

이렇게 고쳐주면 반복시간이 1000 =1초가 되어 이제 시간이보인다
아까는 1초도 아닌 0.0몇초로 바뀌는 거였다

 

 


 

 
 
 
728x90

+ Recent posts