실행 오류 | 예시 경우 | 제어 |
---|---|---|
시스템 오류(error) | 동적 메모리가 없는 경우 스택 메모리의 오버 플로우 | 프로그램에서 제어 불가능 |
예외(exception) | 읽을 파일이 존재하지 않는 경우 데이터 전송 중 네트워크 연결이 안된 경우 배열 값을 출력하는데 배열의 요소가 없는 경우 등 | 프로그램에서 제어 가능 |
에러 종류 | 설명 | 오류 |
---|---|---|
컴파일 에러(compile-time error) | 프로그램 코드 작성 중 컴파일 할 때 발생하는 에러 | 개발 환경에서 대부분의 원인 확인 가능 |
런타임 에러(runtime error) | 실행 중인 프로그램이 의도하지 않은 동작(Bug)을 하거나 프로그램이 중지 | 예측하기 어려운 경우가 많으며, 프로그램이 비정상 종료 |
<출처 - https://mangkyu.tistory.com/152 https://blog.naver.com/goaehfkwl/222842870820>
public static void md2() throws IOException {...}
- 메소드 내에서 문장을 실행하는 과정에서 해당 에러(IOException)가 발생할 수 있다는 의미
public void simpleWrite() throws IOException, IndexOutofBoundsException { .... }
- 둘 이상의 예외를 넘길 때는 ,(콤마)로 구분한다.
class A{ } public class Test { public static void main(String[] args) { A a = new A(); System.out.println(a); // String s = String.valueOf(x); -> s가 주소 뿌림 } }
① 모든 클래스는 Object 클래스를 상속하기 때문에 Test 클래스도 Object를 상속한다.
② Object 클래스에는 문자열을 반환하는 toString 함수가 있는데 class Test에는 toString함수가 Override 되어있지 않아서 a가 가리키는 객체의 주소값(가짜)를 출력하게 된다.
③ 따라서, Test 클래스에 toStirng() 함수를 생성하여 Object 클래스의 toString 함수를 Override하면 Test 클래스의 toString 함수가 호출된다.
*println()함수가 객체 이름을 매개 변수로 받아서 toString()을 호출할 수 있도록 overload되어 있기 때문에
a.toString을 붙이지 않아도 위의 문제와 같이 원하는 문자열이 출력되는 결과를 얻을 수 있다.
- 클래스 Person
- 필드 : 이름, 나이, 주소 선언
- 클래스 Student
- 필드 : 학교명, 학과, 학번, 8개 평균평점을 저장할 배열로 선언
- 생성자 : 학교명, 학과, 학번 지정
- 메소드 average() : 8개 학기 평균평점의 평균을 반환
- 클래스 Person과 Student
- 프로그램 테스트 프로그램의 결과 : 8개 학기의 평균평점은 표준입력으로 받도록한다.
이름 : 김다정
나이 : 20주소 : 서울시 관악구
학교 : 동양서울대학교
학과 : 전산정보학과
학번 : 20132222
8학기 학점을 순서대로 입력하세요
1학기 학점 → 3.37
2학기 학점 → 3.89
3학기 학점 → 4.35
4학기 학점 → 3.76
5학기 학점 → 3.89
6학기 학점 → 4.26
7학기 학점 → 4.89
8학기 학점 → 3.89
8학기 총 평균 평점은 4.0375점입니다.