꾸준히 안타치기

예외처리를 위해 사용되는 Try catch문 본문

CS

예외처리를 위해 사용되는 Try catch문

글자줍기 2021. 1. 7. 12:57
반응형

예외처리란? 예외(일반적인 규칙에서 벗어남) 처리 -> 자바에서의 예외란 오류를 뜻함

예외처리란? 오류 처리를 뜻함

오류란(이치에 어긋난것)-> 프로그램상에서 오류는== 에러 

사용하는 이유는 미리 오류를 대비하고, 비정상적인 종료를 막기위해서 사용

 

1. 특정 메소드는 실패할 경우가 있다.

2. 인터넷이 끊겼거나, 사용자의 입력값이 이상할때 등을 대비

3. 실패시에 자연스럽게 대처하는 코드를 만들어준다.

https://youtu.be/Daf-34kapFs


try선언에는 3종류가 있다.

http://www.tcpschool.com/java/java_exception_intro

 

catch 블록과 finally 블록은 선택적인 옵션으로 반드시 사용할 필요는 없다.

따라서 사용할 수 있는 모든 적합한 try 구문은 다음과 같습니다.

 

  1. try...catch
  2. try...finally
  3. try...catch...finally

다른 제어문과는 달리 예외 처리문은 중괄호({})를 생략할 수 없습니다.

 


 

- try : - 해보다. 시험하다.

- catch: 잡다, 걸리다.함정 

try안의 메서드가 잘 실행되다가, 인터넷안됨이나 잘못된 입력을 만나면, catch문의 내용을 실행한다.

try{

    메서드(); 

    예외가 발생할 가능성이 있는 코드들 작성  / 오류발생시 !

 

} catch(예외 클래스 e){

     예외를 처리할 문장 작성 1

     예외를 처리할 문장 작성 2    예외처리하고 / 예외X 시에는 캐치문 바깥으로 

       

 

}fianally{

      try 선언이 완료된 이후에 실행된 선언들. 이 선언들은 예외 발생 여부와 상관없이 실행된다.

      반드시 실행되어야 하는 메소드

}

 

예외가 발생하지 않으면, catch문 실행안됨 

 

 

참고자료

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/try...catch

 

예외 구문 이유 
ArithmeticException 정수를 0으로 나눌경우 발생 
ArrayIndexOutOfBoundsExcetion 배열의 범위를 벗어난 index를 접근할 시 발생
ClassCastExcetion 변환할 수 없는 타입으로 객체를 반환 시 발생 
NullPointException  존재하지 않는 레퍼런스를 참조할때 발생 
IllegalArgumentException 잘못된 인자를 전달 할 때 발생 
IOException 입출력 동작 실패 또는 인터럽트 시 발생 
OutOfMemoryException  메모리가 부족한 경우 발생  
NumberFormatException  문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생 



NullPointException - 객체 참조가 없는 상태. 참조된 객체가 없는데 사용하려 하니 에러가 남

 

NumberFormatException -  문자열> 숫자타입으로 바꿀때 발생 / 숫자타입으로 변경할수 없는 문자를       치환하려고하면 발생 

 

ClassCastExcetion -  타입변환은 상위클래스와 하위클래스간에 발생, 구현클래스와 인터페이스간에도 발생하는데, 이런관계가 아니면 다른클래스로 타입변활을 할수 없음. 억지로 타입을 변환시킬때 발생




 

정상 실행

try{

           예외 처리하기 원하는 실행 코드 / 오류 없을때 ------->fianally 실행

           throw new Exception(); 강제로 에러를 출력함



} catch(exception_var){ - catch 블록과 관련된 예외 객체를 담기 위한 식별자

     try 블록에서 오류가 발생했을 때 실행될 코드 1

      오류메세지 전달(ex :1000을 넘는 값을 입력하셨습니다! get Message를 통해서 불러오면 좋다.

     e.printStackTrace(); 오류출력

     throw e;



}fianally{

      try 선언이 완료된 이후에 실행된 선언들. 이 선언들은 예외 발생 여부와 상관없이 실행된다.

}




예외발생시

try{

    예외가 발생할 가능성이 있는 코드들 작성  / 오류발생시 !

 

} catch(예외 클래스 e){

     예외를 처리할 문장 작성 1

     예외를 처리할 문장 작성 2    예외처리하고 / 예외X 시에는 캐치문 바깥으로 

       

 

}fianally{

      try 선언이 완료된 이후에 실행된 선언들. 이 선언들은 예외 발생 여부와 상관없이 실행된다.

}

 

데이터를 주고 받을 때 많이 사용함, 그때 변수가 많이 사용되므로 오류도 많이 발생할수 있음

finally에서는 데이터와의 연결을 끊어주는 코드를 주로 삽입한다.

 


 

예외는 반드시 Throw해주어야 한다.

최상단 클래스는 제외한 나머지 클래스에서 예외처리를 만드시 Throw해주어야 한다.

그렇지않으면 Main에서 Exception을 전달 받지 못해서 예외를 인지 못할 수 있다. 

( 예외를 던지는 부분 공부 더 필요 )

 

예외 발생 및 회피

런타임 에서( 실행시 발생하는 오류)

    에러 - 프로그램 코드에 의해서 수습될수 없는 심각한오류

    예외- 수습될수 있는 다소 미약한 오류 / 예외는 처리해야 한다. 

 

자바에서는 throw 키워드를 사용하여 강제로 예외를 발생시킬 수 있습니다.

 

Exception e = new Exception("오류메시지");

...

throw e;

 

 

오류가 발생시 

throw new 권한없음 예외();를  --------> 오류처리를 받는 프로그램안의 try에게 던진다.

 

 

 

반응형
Comments