예외와 예외 클래스
자바에서는 에러 이외에 예외(Exception)라고 부르는 오류가 있다.
예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램오류를 말한다.
예외는 두가지 종류가 있다.
일반 예외(Exception) - 컴파일러 체크예외라고도 하는데, 자바소스를 컴파일하는 과정에서 예외처리 코드가 필요한지 검사하기 때문이다.
실행 예외(Runtime Exception) - 실행 예외는 컴파일하는 과정에서 예외처리 코드를 검사하지 않는 예외를 말한다.
모든 예외 클래스들은 다음과같이 java.lang.Exception 클래스를 상속받는다.
(이 사이트에 예외 클래스의 관한 정보들이 있습니다.)
https://www.tutorialspoint.com/java/lang/java_lang_exceptions.htm
일반 예외와 실행 예외 클래스 구별방법.
일반예외는 Exception을 상속받지만 Runtime Excepiton을 상속받지 않는 클래스이고
실행예외는 Runtime Exception 과 Exception 상속받지만,JVM 은 RuntimeException을 상속했는지 여부를 보고 실행 예외를 판단한다.
실행 예외는 자바 컴파일러가 체크를 하지 않기 때문에 오로지 개발자의 경험에 의해서 예외처리코드를 삽입해야 한다.
자바 프로그램 개발경력이 풍부하면 언제,어떤 실행 예외가 발생하는지 쉽게 알수 있지만, 저같은 초보 개발자라면 설명하는 몇가지 실행 예외를 잘 익혀두어야한다. 언제 어떤 오류 메세지가 출력되는지 잘 알아둘필요가 있다.
대표적인 몇가지 실행 예외들을 보겠습니다.
NullPointException
Null값을 갖는 참조변수로 객체 접근 연산자인 도트(.)를 사용했을때 발생한다. 객체가 없는 상태에서 객체를 사용하려 했으니 예외가 발생하는 것이다.
[NullPointerExceptionExample.java] NullPointerException 이 발생한 경우
public class NullPointExceptionExample{
public static void main(String[] args) {
String data = null;
System.out.println(data.toString());
}
}
3라인에서 data변수는 null값을 가지고 있기 때문에 String객체를 참조하고 있지않다. 하지만 4라인에서 String 객체의 toString() 메소드를 호출하고 있다. 여기서 NullPointException이 발생한다.
프로그램에서 예외가 발생하면 예외 메시지가 Coonsole뷰에 출력되면서 프로그램이 종료된다.
Console 뷰에 출력되는 내용에는 어떤 예외가 어떤소스의 몇번째 코드에서 발생했는지 대한 정보가 들어있다.
문제가 되는 코드에 정확히 하이라이팅을 해줌으로 어디서 문제가 발생 되었는지 알수있다.
NumberFormatException
반환타입 | 메소드명(매개 변수) | 설명 |
int | Integer.parseInt(String s) | 주어진 문자열을 정수로 변환해서 리턴 |
double | Double.parseDouble(String s) | 주어진 문자열을 실수로 변환해서 리턴 |
정적 메소드인 parseXXX() 메소드를 이용하면 문자열을 숫자로 변환할 수 있다.
숫자로 벼노한될 수 없는 문자가 포함되어 있다마녀 java.lang.NumberFormatException을 발생시킨다.
public class NumberFormatExceptionExample {
public static void main(String[] args) {
String data1 = "100";
String data2 = "a100";
int value1 = Integer.parseInt(data1);
int value2 = Integer.parseInt(data2); // NumberFormatException 발생
int result = value1 + value2;
System.out.println(data1 + "+" + data2 "=" + result);
}
}
data1 변수의 "100" 문자영ㄹ은 숫자로 변환이 가능하기 때문에 6라인이 정상적으로 실행되자만 data2변수의 "a100" 문자열은 숫자롤 변환하라 수 없기 때문에 다음과 같이 NumberFormatException 이 발생한다.
'lecture' 카테고리의 다른 글
예외 처리 방법 1(예외 떠넘기기) (0) | 2021.12.14 |
---|---|
예외 처리 코드(try-catch-finally) (0) | 2021.12.14 |
다중 catch(둘 이상의 예외 처리) (0) | 2021.12.14 |
Abstract (0) | 2021.12.10 |
Final (0) | 2021.12.10 |