1. 예외(Exception)
•
오류와 같은 예외가 발생했을 때 오류메세지 출력 등의 처리를 하는 것
public class 예외 {
public static void main(String args[]){
// 숫자를 0으로 나누면 예외 발생
int b = 4/0;
}
}
Java
복사
Exception in thread "main" java.lang.ArithmeticException: / by zero
•
예외 처리 형식
Exception 구현 형식
try
{
...
}
catch
(예외1) {
...
}
catch
(예외2) {
...
...
}
— try 문장에서 예외가 발생하지 않는다면 catch 문은 무시된다.
— catch에 설정된 예외가 발생할 경우 해당 구문의 예외 처리가 실행된다.
•
앞의 예외를 try-catch 문으로 바꾸어 예외 처리
public class 예외 {
public static void main(String args[]){
try{
int b = 4/0;
}
// try 문에서 arithmeticExcetion 발생 시 해당 문장 출력
catch(ArithmeticException e){ // e == 오류 객체, 예외 클래스 메소드 호출
System.out.println("0으로 나눌수 없습니다.");
}
}
}
Java
복사
0으로 나눌수 없습니다. // 예외 처리 되어 문장이 출력됐음을 확인할 수 있다.
•
Finally - 예외가 발생하더라도 꼭 실행되는 것
— 예외 처리 후 그 다음 문장은 실행되지 않는다.
public class 예외 {
public static void main(String args[]){
try{
int b = 4/0; // 예외 처리로 아래의 출력문이 실행 x
System.out.println("4를 0으로 나눌 수 있다면 이게 실행되겠지?");
}
catch(ArithmeticException e){
System.out.println("0으로 나눌수 없습니다.");
}
}
}
Java
복사
0으로 나눌 수 없습니다. // 예외 발생 후 다음 문장이 실행되지 않음
— 이를 처리하기 위해 fianlly 문에 넣어보자.
public class 예외 {
public static void main(String args[]){
try{
int b = 4/0;
}
catch(ArithmeticException e){
System.out.println("0으로 나눌수 없습니다.");
}
finally{
System.out.println("4를 0으로 나눌 수 있다면 이게 실행되겠지?");
}
}
}
Java
복사
0으로 나눌수 없습니다.
4를 0으로 나눌 수 있다면 이게 실행되겠지? // 예외 처리 후 실행 됨
•
예외는 크게 두가지로 나뉜다
◦
Runtime Excetion - 실행 시 발생하는 예외 처리
◦
Excetion - 컴파일 시 발생하는 예외처리
•
예외 던지기(throw) - 메소드를 사용하여 예외를 발생 시킬 수 있다.
— Runtime Exception
class except extends RuntimeException{ // runtime exception 예외 생성
}
public class 예외 {
public static void main(String args[]){
if(2/2 == 1){
throw new except(); // runtime exception 예외 던지기
}
}
}
Java
복사
Exception in thread "main" except
— Exception
class except extends Exception{ // exception 예외 생성
}
public class 예외 {
public static void main(String args[]){
try{
if(2/2 == 1){
throw new except(); // runtime exception 예외 던지기
}
}
catch(except e){
System.out.println("생성해둔 예외가 처리 됨.");
}
}
}
Java
복사
생성해둔 예외가 처리 됨.
2. Static
— 메모리에 고정적으로 할당되어, 프로그램이 종료될 때 해제되는 변수
— 여러 객체가 메모리 공유 —> 메모리 절약