03.예외(Exception)처리
by SANGGI JEON
예외(Exception)처리
-
프로그램 실행 중에 발생하는 오류를 예외(Exception)라고 한다.
- 일반예외(Exception)
- ClassNotFoundException
- InterruptedException
- etc
- 실행예외(Runtime Exception)
- 실행전에 예외가 발생 할 수 있다고 알려줌
- NullPointerException
- ClassCastException
- NumberFormatException
- etc
- 자바는 예외를 클래스로 관리
- 모든 예외 클래스는 java.lang.Exception 클래스를 상속 받음
- 실행예외는 java.lang.RuntimeException을 상속 받음
// 예제1. NullPointerException
package com.jremind.exam0625;
public class ExceptionExam {
public static void main(String[] args) {
String data = null;
System.out.println(data.toString());
}
}
// 예제2. ArrayIndexOutOfBoundsException
package com.jremind.exam0625;
public class ExceptionExam {
public static void main(String[] args) {
String data1 = args[0];
String data2 = args[1];
System.out.println(data1);
System.out.println(data2);
}
}
// 예제3. NumberFormatException
package com.jremind.exam0625;
public class ExceptionExam {
public static void main(String[] args) {
String data1 = "100";
String data2 = "a100";
int val1 = Integer.parseInt(data1);
int val2 = Integer.parseInt(data2);
int result = val1 + val2;
System.out.println(result);
}
}
// 예제4. ClassNotFoundException
package com.jremind.exam0625;
public class ExceptionExam {
public static void main(String[] args) {
Class c = Class.forName("java.lang.String2");
}
}
- try-catch-finally 문으로 Exception 처리를 통해 에러를 방지
- try : 예외가 발생할지도 모를 코드 블록을 정의
- catch : try 블록 내부에서 예외가 발생할 경우 호출되는 코드 블록
- finally : try와 catch 상관없이 항상 실행이 되는 코드 블록 (finally는 생략이 가능)
// 예제5. ArrayIndexOutOfBoundsException
package com.jremind.exam0625;
public class ExceptionExam {
public static void main(String[] args) {
String data1 = null;
String data2 = null;
try {
data1 = args[0];
data2 = args[1];
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("매개변수 값이 부족합니다.");
}finally{
System.out.println("Finally!!!");
}
}
}
// 예제6. ClassNotFoundException
package com.jremind.exam0625;
public class ExceptionExam {
public static void main(String[] args) {
try {
Class c = Class.forName("java.lang.String2");
}catch(ClassNotFoundException e) {
System.out.println(e);
}
}
}
// 예제7-1. BalanceInsufficientException.java
package com.jremind.exam0625;
public class BalanceInsufficientException extends RuntimeException{
public BalanceInsufficientException(){}
public BalanceInsufficientException(String Message) {
super(Message);
}
}
// 예제7-2. Account.java
package com.jremind.exam0625;
public class Account {
private long balance;
public long getBalance() {
return balance;
}
public void deposit(int money) {
balance += money;
}
public void withdraw(int money) throws BalanceInsufficientException{
if(balance < money) {
throw new BalanceInsufficientException("잔고부족");
}
balance -= money;
}
}
// 예제7-3. AccountMain.java
package com.jremind.exam0625;
public class AccountMain {
public static void main(String[] args) {
Account acc = new Account();
acc.deposit(10000);
System.out.println("잔액: " + acc.getBalance());
try {
acc.withdraw(500000);
}catch(BalanceInsufficientException e) {
System.out.println(e.getMessage());
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
Subscribe via RSS