본문 바로가기
Develope_Web&App/01_Java & JavaFX

[java] 예외처리

by 스타트업_디벨로퍼 2021. 1. 27.

1. main() 메소드가 없는 클래스를 실행한 경우

 

오류: ex.Hello 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.

public static void main(String[] args)

 

원인: 자바 프로그램은 JVM이 구동되면 맨 처음 main() 메소드를 찾아서 실행한다.

따라서 main() 메소드가 없거나 잘못 작성하면 클래스를 실행할 수 없다.

 

 

2. 변수 선언 후 초기화하지 않은 경우

 

오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

The local variable value may not have been initialized

 

원인: 초기화되지 않은 변수는 읽을 수가 없다.

 

 

3. 데이터 타입별 표현 가능한 값의 범위를 초과하는 값이 변수에 저장된 경우

또는

선언된 배열 타입과 다른 타입의 값을 저장하려고 한 경우

 

오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

Type mismatch: cannot convert from int to byte

 

원인: byte가 표현할 수 있는 값의 범위는 -128 ~ 127,

배열은 같은 타입만 저장할 수 있다.

 

 

3-1. 자바 정수 리터럴 기본 타입의 저장 범위를 초과하는 정수의 값이 변수에 저장된 경우

 

오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

The literal 1234567898765 of type int is out of range

 

원인: 자바 정수 리터럴 기본 타입은 int,

int의 저장 범위를 넘어서는 정수는 값 뒤에 소문자 l 또는 대문자 L(long 타입)을 붙여서 변수에 저장해야 한다.

int가 표현할 수 있는 값의 범위는 -2,147,483,648 ~ 2,147,783,647

ex. long longValue = 1234567898765L;

 

 

4. char 타입 변수를 빈 문자(‘’)로 초기화한 경우

 

오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

Invalid character constant

 

원인char 타입 변수를 빈 문자로 초기화하려면 ‘ ’ 작은따옴표 사이에 공백을 포함해야 한다.

단, String 변수는 공백없이 “” 큰따옴표 빈 문자로 초기화 가능

 

 

5. 정수 타입 / 0 연산 또는 정수 타입 % 0 연산한 경우

 

오류: Exception in thread "main" java.lang.ArithmeticException: / by zero

 

원인: 정수 타입인 경우 나누는 수로 0을 사용할 수 없다.

정수 / 0.0 가능, 결과값 Infinity 출력

정수 % 0.0 가능, 결과값 NaN 출력

 

 

6. 지역 변수를 선언된 블록 바깥에서 사용한 경우

 

오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

i cannot be resolved to a variable

 

원인메소드 블록 내에서 선언된 변수는 메소드 실행이 끝나면 메모리에서 자동으로 없어진다.

즉, 지역 변수는 선언된 블록 범위를 벗어나면 사용할 수 없다.

 

 

7. null 값을 가지고 있는 참조 타입 변수를 사용한 경우

 

오류: Exception in thread "main" java.lang.NullPointerException

 

원인: null로 초기화된 참조 변수는 스택 영역에만 생성되기 때문에 힙 영역에 객체를 참조하지 않는다.

즉, null로 초기화된 참조 변수는 참조할 객체가 없으므로 사용할 수 없다.

 

 

8. 배열의 인덱스 범위를 초과해서 사용한 경우

 

오류: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException

 

원인배열의 인덱스 범위는 0 ~ (배열변수.length - 1)

 

 

9. 정수로 변환할 수 없는 문자열을 정수로 변환시키려고 한 경우

 

오류: Exception in thread "main" java.lang.NumberFormatException

 

원인: Integer.parseInt( ) 메소드를 통해 정수로 변환 가능한 문자열 ex. "10", "100" 등…

 

 

 

참고도서 : 이것이 자바다

반응형

'Develope_Web&App > 01_Java & JavaFX' 카테고리의 다른 글

[Java의 정석] 객체 지향 1  (0) 2021.02.03
[java] string 변환시키기  (0) 2021.01.27
[Java] Chap04 조건문과 반복문  (0) 2021.01.27
[Java] 03 연산자(Operator)  (0) 2021.01.26
[Java] chap 02. 변수  (0) 2021.01.26