일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Linux세팅
- include액션태그
- 스레드그룸
- sleep()메소드
- InputDialog
- interrupt()
- 리눅스세팅
- interrupted()
- Daemon()
- 상관 서브 쿼리
- 동기화
- include지시자
- String char[] 형변환
- include 지시자
- StringReader
- 메모리스트림
- MemoryStream
- isinterrupted()
- char[] String 형변환
- ThreadGroup()
- first-of-child
- 리눅스셋팅
- StringWriter
- first-child
- 아이디중복
- 상관서브쿼리
- Linux셋팅
- ID중복
- ObjectInputStream
- 표현 언어
- Today
- Total
다연이네
[days17] 예외처리 (Exception handling) 본문
프로그램 오류
1. 정의
프로그램 실행 중 어떤 원인에 의해 오작동하거나 비정상적으로 종료되는 경우가 존재하는데,
이러한 결과를 초래하는 원인
2. [발생 시점]에 따른 구분
ㄱ. 컴파일에러(compile-time error)
ㄴ. 런타임 에러(runtime error)
1) 컴퓨터 하드웨어의 오작동: 에러(Error)-코딩에 의한 수습 불가
2) 프로그램 코드에 의해 수습될 수 있는 다소 미약한 오류: 예외(Exception)
ㄷ. 논리적 에러(logical error)
실행은 되나 의도와 다르게 동작( 게임에서 총알에 맞음 -> 죽지 않음)
모든 클래스 최상위 부모 클래스는 Object이고.
:
Throwable
: :
Exception Error
: :
RuntimeException ... IOException OutOfMemoryError
모든 예외의 부모클래스는 Exception 클래스이다.
예외처리
(1) try~catch문 사용
- 다중 catch문 사용
- 멀티 catch문 사용
catch (IndexOutOfBoundsException | ArithmeticException e)
*예외처리를 프로그램 실행 중간에 강제로 예외를 발생시켜 멈추는 것을 방지할 목적으로 사용하기도 한다.
int [] m = {1,2,3};
for (int i = -10; i <= m.length; i++) {
try {
System.out.println(m[i]);
} catch (ArrayIndexOutOfBoundsException e) {
//예외 발생하면 넘어간다. (중단되는게 아니라)
}
}
출력값: 123
예외를 출력하는 함수
e.printStackTrace(); //예외메시지를 출력하는 함수
System.out.printin(e.getStackTrace()); //에러메세지만 출력
System.out.printin(e.toString());
System.out.printin(e.getMessage()); //입력된 예외메시지 출력
(2) throw 키워드로 예외 발생시키기
throw문 : 예외를 강제로 발생시키는 문
throws 문 : 예외 떠넘기기 (메인에서 throws IOException 하면 예외처리 안하겠다는 소리)
//<try~catch문으로 국어 점수 얻기>
package review;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Review03 {
public static void main(String[] args) {
int result = getKor();
System.out.println(result);
}
private static int getKor() {
Scanner scanner = new Scanner(System.in);
int kor = 0;
while(true) {
System.out.print("> input kor score ?");
try {
kor=scanner.nextInt();
break;
} catch (InputMismatchException e) {
scanner.nextLine();
System.out.println("> input again");
}
}
return kor;
}
}
//throw로 강제로 예외 발생시킨 후 throws로 예외처리 넘겨주기
package review;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Review03 {
public static void main(String[] args) {
try {
int kor = getKor();
System.out.println(kor);
} catch (InputMismatchException|IOException e) {
System.out.println(e.getMessage());
}
}
private static int getKor() throws InputMismatchException, IOException{
Scanner scanner = new Scanner(System.in);
int kor = 0;
System.out.print("> input kor score ? ");
String data = scanner.next();
if(data.matches("\\d{1,2}|100")) {
kor = Integer.parseInt(data);
return kor;
}
else throw new InputMismatchException("Mistake!!"); //강제로 예외 발생
}
}
'Java' 카테고리의 다른 글
[days18] 클래스 객체를 얻는 방법 (0) | 2020.10.18 |
---|---|
[days18] java.lang 패키지와 유용한 클래스, String의 다양한 메소드 (0) | 2020.10.18 |
[days17] 인터페이스, 익명클래스 (0) | 2020.10.18 |
[days16] 싱글톤패턴 (0) | 2020.10.17 |
[days16] 다형성 (0) | 2020.10.17 |