Hello, Android!
예외처리 본문
프로그램이 실행되는 도중 온갖 예외상황이 발생할수 있다
이런 예외를 적절하게 처리하지 않으면 코드가 작동하지 못하고 중단한다
예를들어 메모리가 부족한 상황 또는 0으로 나누게 되면 예외처리를 해야한다
이때 예외 처리를 자바와 동일하게 try catch 를 사용한다
try{예외가 발생할 처리} cathc(e: 에러 클래스){예외 발생시 처리}finaly{반드시 실행되는 처리}
10을 0으로 나누는 에러가 발생하면 catch가 실행되고 마지막으로 반드시 실행되는 finaly가 실행된다
catch에 에러 클래스에 Exception을 사용하였는데 exception클래스는 일반적인 모든 예외를 의미한다
예외 | 이유 |
ArithmeticException | 정수를 0으로 나누는 경우 |
ArrayIndexOutOfBoundsException | 배열의 범위를 벗어난 index참조 |
ClassCastException | 변환할수 없는 타읍으로 객체를 반환 |
NullPointerException | 존재하지 않는 레퍼런스 참조 |
IllegalArgumentException | 잘못된 인자를 전달하는 경우 |
IOException | 외부 입출력 동작실패, 인터럽트 발생 |
OutOfMemoryError | 메모리 부족 |
NumberFormatException | 문자열로 표현한 숫자와 일치하지 않는 타입의 숫자로 변환시 |
exception이외의 예외는 위와 같다
특정한 예외에 대하여 처리를 하는 경우 발생할 것으로 예상되는 예외를 catch에 사용하면 된다
정수를 0으로 나누는 등의 산술 에러는 ArithmeticException를 사용한다
예외를 가리키는 객체 e를 이용하여 간단히 에러 메세지를 출력하는것도 가능하다
- throw
throw를 사용하면 필요한 경우 예외를 발생시킬수 있다
try catch로 예외를 대응하였지만 throw을 사용하여 예외를 발생시킬수 있다
checkAmount함수에서 매개변수가 20보다 작으면 throw를 만나 예외를 발생시켜
main의 cathc에서 예외에 대한 대응을 하게 된다
이때 e.message에서 출력하는 에러 메세지는 throw에서 넘겨준 문자열을 받는다
- 사용자 정의 예외
위의 예외 표에서 처럼 코틀린에서 기본적으로 제공하는 여러 예외 클래스들이 있는데
이들은 Throwable클래스의 자식 클래스들 이다
일반적인 모든 예외를 처리하는 Exception클래스를 사용하여 사용자가 정의한
예외 클래스를 만들수 있다
class 예외클래스명(message: String) : Exception(message)
의 형태로 사용한다
사용자 정의 예외 클래스 선언시 : 콜른을 사용하여 Exception 클ㄹ스의 하위 클래스로 만들수 있다
try에서 checkLeng함수에 문자열을 넘겨, 문자열의 길이가 10보다 길면 TooLong예외를 발생시킨다
여기서 catch문에서 TooLong, ArrayIndexOutOfBoundsException, Exception 세가지의 예외를 처리하는데
checkLeng함수에서 발생한 TooLong예외는 TooLong의 catch에 들어가 예외 대응이 되는것을 볼수있다
'Kotlin' 카테고리의 다른 글
생성자 (0) | 2020.03.11 |
---|---|
클래스 (0) | 2020.03.10 |
break와 continue (0) | 2020.03.08 |
함수의 반환 (0) | 2020.03.08 |
반복 while, for (0) | 2020.03.04 |