프로그래밍/- java
오류, 예외처리
즐겁게 하하하
2022. 2. 3. 08:40
728x90


★ 오류의 종류
=> 컴파일 에러 :: 컴파일 할때 발생하는 에러
ex) system.out.println(); //System.~
=> 런타임 에러 :: 실행 할 때 발생하는 에러
- 에러 : 수습될 수없는 심각한 오류
- 예외 : 수습 가능한 오류 :: 비정상 종료를 막고, 정상적인 상태 유지
Exception( 외적인 요인 ) :: try{}catch{} 필수
RuntimeException( 프로그래머 실수로 발생하는 예외 ) :: try{}catch{} 선택
- ArithmeticException
- ClassCastException 형변환 에러
- NullPointerException 참조변수 null
- indexOutOfBoundsException 배열범위 벗어난것
try {
// 1. 예외 발생시 예외 객체 발생
// 2. 예외를 일부러 발생 시키는방법
Exception e = new Exception("고의로 발생시킴");
throw e; // throw new Exception(); 도 가능
} catch( ArithmeticException ae ){
ae.printStackTrace();
System.out.println( ae.getMessage() ); // 스택에 있는 내용을 알려줌 :: 5번줄 오류.
}catch( Exception e ){
System.out.println( e.getMessage() ); // 예외 메시지 알려줌
} finally {
// 예외의 발생여부에 관계없이 항상 수행되어야 하는 문장
// try 블럭 안에 return 문장이 있어서 try 벗어날때도 finally 블럭 실행
}
//메서드에 예외 처리
static void startInstall() trhow SpaceException , MemoryException {}



★ 연결된 예외
=> 예외 A 가 예외 B 를 발생시키면 A는 B의 원인예외
Throwable initCase( Thorwable cause ) :: 지정한 예외를 원인 예외로 등록
Throwable getCause() :: 원인 예외를 반환
=> 여러 예외 catch{}블럭을 하나로 묶어서 다루기 위해 사용합니다.
try {
install();
} catch( InstallException e ){
e.printStackTrace();
}
void install() throw InstallException{
try{
startInstall();
copyFiles();
} catch( SpaceException e ){
InstallException ie = new InstallException(" 설치중 예외발생 ");
ie.initCause(e); //InstallException의 원인예외를 SpaceException 으로 지정
throw ie; // installException 발생시킨다.
} catch( MemoryException me ){
}
=> Exception 필수 예외를 RuntimeException 선택 예외로 변경하려 할때 사용합니다.
// throw SpaceException , MemoryException => MemoryException을 선택예외로 변경
static void startInstall() throw SpaceException {
if( !enoughSpace())
throw new SpaceException("설치할 공간이 부족");
if( !enoughMempry() ){
throw new RuntimeException( new MemoryException("메모리 부족") );
}
728x90