반응형


자바를 실행하다보면, 분명 맞다고 생각했는데 자꾸 다음과 같은 문장이 콘솔에 나타난다.



일단 확실한 것은 코더가 실수를 한것이지, 자바는 실수를 하지 않는다는 것이다.


하지만 저렇게 에러코드를 표현해주는것은 Visual Studio처럼 명확하게 오류를 표현해주지 못할뿐더러, 어떻게 잘못된지 파악하기가 힘들다.


따라서 이러한 에러를 잡아내기위해 try catch 구문을 이용한다.



형식은 다음과 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
try
{
코드
}
 
catch(예외 타입 e)
{
코드
}
 
finally
{
코드
}
Crocus


try :: 일반적인 코드가 들어간다.


catch :: 에러(예외)가 발생했을 때 이 부분으로 들어간다.


finally :: try 혹은 catch문 실행 후 무조건 실행되는 구문이다. 물론 finally코드 없이 try catch문으로 작성 할 수도 있다.



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
32
33
34
35
36
package JavaBasic;
 
class Jmain{
    
    public static void main(String []args)
    {
        // 크기가 5인 배열 생성
        int []arr = new int[5];
        
        try{
            // 100을 0으로 나눈다.
            arr[0= 100 / 0;
 
            // arr[100]에 1값을 넣는다.
            arr[100= 1;
            
        }
        
        // ArithmeticException :: 수학적 오류일 때
        catch (ArithmeticException e){
            System.out.println("오류 원인 :: " + e.getMessage() + " // 0으로 나누거나 다른 수학적 오류입니다.");            
        }
        
        // ArrayIndexOutOfBoundsException 배열 참조 오류일 때
        catch (ArrayIndexOutOfBoundsException e){
            System.out.println("오류 원인 :: " + e.getMessage() + " // 배열 참조가 잘못되었습니다.");
        }
        
        finally{
            System.out.println("오류가 없다면 계속 진행, 오류가 있다면 수정하세요.");
        }
    }
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crocus



위의 코드는 arr[0] = 100 / 0; 과 arr[100] = 1;의 위치를 서로 바꾸면 서로 다른 예외처리를 볼 수 있다.








throw 는 오류 메시지를 직접 구현하는 것이다.


형식은 다음과 같다.


throw new Exception(" Print Your Error Message " );


자세한 내용은 주석을 통해 달아두었다.


그리고 추가적으로 우선순위 및 형변환을 이용한 코딩의 내용도 담아두었다.



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
32
33
34
35
package JavaBasic;
 
class Jmain{
    
    public static void main(String []args)
    {
        char []str = new char[3];
        int i = 0;
        
        // Java에서는 while(1)이라는것이 없고, while(true)이다.
        while(true)
        {
            try{
                if(i < 3){
                    str[i] = (char)('a' + i);    // ASCII로 판단, 'a' + 1라면 'b'가 된다.
                
                    // str[i++]의 의미는 str[i]를 출력하고 난 뒤, i를 1 증가 시킨다.
                    System.out.println("현재 i :: " + i + " 현재 str["+i+"] :: " + str[i++]);
                }
                else
                    // throw를 쓰기 위해서는 항상 try catch를 써야 한다.
                    throw new Exception("i가 현재 " + i + "입니다. 배열 범위를 초과하였습니다.");
            }
            
            catch(Exception e){
                System.out.println("ErrMsg :: " + e.getMessage());
                return;
            }
        }
        
    }
}
 
//                                                       This source code Copyright belongs to Crocus
//                                                        If you want to see more? click here >>
Crccus









반응형