๋ค์ด๊ฐ๊ธฐ
ํ๋ก๊ทธ๋จ์ด ์คํ ์ค ์ด๋ค ์์ธ์ ์ํด์ ์ค์๋์ ํ๊ฑฐ๋ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฒ์ ์๋ฌ ๋๋ ์ค๋ฅ๋ผ๊ณ ํ๋ค.
์ด๊ฒ์ ๋ฐ์ ์์ ์ ๋ฐ๋ผ ๋ ๊ฐ์ง ์ข ๋ฅ๋ก ๋๋์ด์ง๋ค.
1. ์ปดํ์ผ ์๋ฌ ( Compile-time Error ) : ์ปดํ์ผ ํ ๋ ๋ฐ์ํ๋ ์๋ฌ.
2. ๋ฐํ์ ์๋ฌ ( Runtime Error ) : ํ๋ก๊ทธ๋จ์ด ์คํ ๋์ค์ ๋ฐ์ํ๋ ์๋ฌ.
์๋ฐ์์๋ ์คํ ์ ๋ฐ์ํ ์ ์๋ ํ๋ก๊ทธ๋จ ์ค๋ฅ๋ฅผ ์๋ฌ( Error )์ ์์ธ ( Exception ) ๋ ๊ฐ์ง๋ก ๊ตฌ๋ถํ๋ค.
1. ์๋ฌ : ํ๋ก๊ทธ๋จ์ด ์คํํ๋ค๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ์ค์ ์ฌ๊ฐํ ์ปดํจํฐ ๊ด๋ จ ๋ฌธ์ ๋ก ํด๊ฒฐํ ์ ์๋ ๊ฒ.
2. ์ค๋ฅ : ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์๋ ๋ฌธ์ ๋ฐ์ ์ํฉ, ์๋ฌ์ ๋นํด ๋น๊ต์ ๋ ์ฌ๊ฐํ ์ํฉ.
๋ํ! ์์ธ( Exception )์ค์์๋
ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ด๋ฆฌํด์ผํ ์์ธ( Exception )๊ณผ ์คํ ์ค์ ๋ฐ์ํ๋ ์์ธ๋ฅผ RuntimeException์ผ๋ก ๋๋ ๋์๋ค.
1. Exception : ๋ฏธ๋ฆฌ ์์ธ ์ํฉ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ์ ํด์ผ ํ๋ค.
2. RuntimeException : ์คํ ์ค ๋ฐ์ํ๋ ์์ธ์ด์ง๋ง, ์ฝ๋ฉํ ๋ ์ฒ๋ฆฌํ ํ์๋ ์๋ค.
ํ์ต๋ชฉํ
์๋ฐ์ ์์ธ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
๐ ์ปดํ์ผ ์๋ฌ ( Compillation Error )
- ์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ ๋ฐ๊ฒฌ, ์ปดํ์ผ๋ฌ๊ฐ ์๋ฌ ๋ฉ์์ง ์ถ๋ ฅํ๋ค.
- ์๋ฌ ๋ฐ์ ์์ธ : ๋ฌธ๋ฒ ์ค๋ฅ
- ๋ถ๋ชจํด๋์ค์ Runtime Exception์ด ์์ผ๋ฉด ์ปดํ์ผ ์์ธ์ด๋ค.
ex) ๋ง์ถค๋ฒ, ๋ฌธ์ฅ๋ถํธ, ์ ์ธ๋์ง ์์ ๋ณ์ ์ฌ์ฉ ๋ฑ
๐ ๋ฐํ์ผ ์๋ฌ ( Runtime Error )
- ์ปดํ์ผ ๋ ์๋ฌ๊ฐ ๋์ง ์๊ณ ํ๋ก๊ทธ๋จ ์คํ ์ ์๋ฌ ๋ฐ์ => ๋ฌธ๋ฒ์ ์ค๋ฅ๊ฐ ์๋๋ค.
- JVM์์ ์๋ฌ ๋ฉ์์ง ์ถ๋ ฅ
- ๋ถ๋ชจํด๋์ค์ RuntimeException์ด ์์ผ๋ฉด ๋ฐํ์ ์์ธ์ด๋ค.
ex) 0์ผ๋ก ๋๋๊ธฐ, ๋ฌดํ๋ฃจํ, ์กด์ฌํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ๊ทผ, ์๋ชป๋ index ์ฐธ์กฐ
โ Runtime Exception์ด ๋ฐ์ํ๋ ์ํฉ
์ฝ๋ฉ ์์ ์์ธ๊ฐ ๋ฐ์ํ๋ ์ํฉ | ์์ธ์ฒ๋ฆฌ ํด๋์ค | ์ฌ์ฉ ์ ) |
์๋ฅผ 0์ผ๋ก ๋๋ ๋ ๋ฐ์. | ArithmeticException | try{ ์ ๋๋๊ธฐ ์ฐ์ฐํ๋ ์ฝ๋. }catch(ArithmeticException ae){ } |
๋ฐฐ์ด ๋๋ java.util.List ๊ณ์ด์ ์กด์ฌํ์ง ์๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๋. | ArrayIndexOutOfBoundsException | try{ ๋ฐฐ์ด, List ๋ฐฉ์ ๊ฐ์ ๋ฃ๊ฑฐ๋ ์ป๋ ์ฝ๋ }catch (ArrayIndexOutOfBoundsException aioobe){ } |
๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ์ฌ์ฉํ ๋. | NullPointerException | try{ ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ method ํธ์ถ, ๋ณ์๋ฅผ ์ฌ์ฉํ ๋. }catch(NullPointerException npe){ } |
๋ฌธ์์ด์ด ์ซ์ ํ์์ด ์๋ ๋. | NumberFormatException | try{ ๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ๋ ์ผ. }catch(NumberFormatException npe){ } |
๊ฐ์ฒด๋ฅผ Casting ํ ๋. ๊ฐ์ฒด๋ ์์๊ด๊ณ์ ์๋ ํด๋์ค๋ก๋ง Casting์ด ๊ฐ๋ฅ. |
ClassCastException | try{ ๊ฐ์ฒด๋ฅผ casting ํ๋ ์ผ. }catch(ClassCastException cce){ } |
๋ฌธ์์ด์ ์๋ฅผ ๋ ( ํ์ ๋ฌธ์์ด ) |
StringIndexOutOfBoundsException | try{ ๋ฌธ์์ด์ ์๋ฅด๋ ์ผ. }catch(StringIndexOutOfBoundsException sioobe){ } |
์์ธ์ฒ๋ฆฌ ํด๋์ค ์ฌ์ฉ์์ )
package day0726;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* RuntimeException ์ธ ArrayIndexOutOfBoundsException ์ฒ๋ฆฌ
*
* @author user
*
*/
public class UseArrayIndex {
public void useArray() {
String[] data = { "์๋ฐ", "๋ณต์ญ์", "์๋", "์ด๊ตฌ", "๋ฐ๋๋" };
Random random = new Random();
int num = random.nextInt(data.length + 1);
try { // ๋๋น์ฝ๋ try catch ์ถ๊ฐ
System.out.println("์ถ์ฒ๊ณผ์ผ : " + data[num]);
} catch (ArrayIndexOutOfBoundsException aioobe) { // ๋๋น์ฝ๋ try catch ์ถ๊ฐ
System.err.println("์ธ๋ฑ์ค๋ฅผ ํ์ธํ์ธ์");
} // end catch
}// useArray
public void useList() {
List<String> list = new ArrayList<String>();
list.add("๋ด");
list.add("์ฌ๋ฆ");
list.add("๊ฐ์");
list.add("๊ฒจ์ธ");
try {
System.out.println(list.get(0));
System.out.println(list.get(4)); // ์ฌ๋ฐ๋ฅด์ง ์์ ์ธ๋ฑ์ค๋ฅผ ์
๋ ฅํ ๊ฒฝ์ฐ
} catch (IndexOutOfBoundsException ioobe) {
System.err.println("์กด์ฌํ์ง ์๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉ.");
}
}// useList
public static void main(String[] args) {
UseArrayIndex uai = new UseArrayIndex();
System.out.println("------๋ฐฐ์ด ์ฌ์ฉ-------");
uai.useArray();
System.out.println("------๋ฆฌ์คํธ ์ฌ์ฉ------");
uai.useList();
}// main
}// class
๐์์ธ์ฒ๋ฆฌ ( Exception Handling )
- ์์ธ์ฒ๋ฆฌ ( ํ๋ก๊ทธ๋จ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋์๋ ์ฐ์ํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก ๋๋น์ฝ๋๋ฅผ ๋ง๋ค์ด ๋๋ ๊ฒ. )
- ํ๋ก๊ทธ๋จ์์ ๋ฐ์ํ ์ ์๋ ๊ฐ๋ฒผ์ด Error. ( JVM๊น์ง Error๊ฐ ์ ๋ฌ๋๋ฉด ๋์ x )
- ์ฝ๋ฉํ ๋ ๋ฐ๋์ ์์ธ์ฌํญ์ ์์ธกํ๊ณ ๊ทธ์ ๋ํ ์ฒ๋ฆฌ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค.
- throw, throws, try~catch๋ก ๋ฐ์, ๋ ๋ฆผ, ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค. ( ์์ธ๊ฐ ํฐ์ง๋ฉด ์์ธ๋ฅผ ๋ ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ก๋๋ค )
- ์์ธ๊ฐ ๋ฐ์ํ๋ ์์ ์ ๋ฐ๋ผ Runtime Exception๊ณผ Compile Exception์ผ๋ก ๊ตฌ๋ถ๋๋ค.
- ์์ธ์ฒ๋ฆฌ ํด๋์ค์ ๊ฐ์ฅ ์ ๋ถ๋ชจ๋ java.lang.Throwable
( Throwable ์์ java.lang์ด ์๋ค. java.lang์ ์๋ฐ ๋ชจ๋ ํด๋์ค์ ๋ถ๋ชจ ํด๋์ค์ด๋ค. )์ด๋ค.
โ ์๋ฐ์ ์์ธ ์ฒ๋ฆฌ๋ฌธ
1. ์์ธ๊ฐ ๋ฐ์ํ ๋ฉ์๋ ์์์ ์ฒ๋ฆฌ ( try-catch-finally )
2. ์์ธ๊ฐ ๋ฐ์ํ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ณณ์์ ์ฒ๋ฆฌ ( throws )
3.๊ฐ์ ๋ก ์์ธ๋ฅผ ๋ฐ์์์ผ์ ์ฒ๋ฆฌ ( throw )
4. ์ฌ์ฉ์ ์์ธ๋ฅผ ์์ฑํ์ฌ ์ฒ๋ฆฌ
๐งธ try-catch-finally ์์ธ
์์ธ๊ฐ ๋ฐ์ํ ๋ฉ์๋ ์์์ ์ฒ๋ฆฌ ( try-catch-finally )
โ try-catch-finally ์์ธ์ฒ๋ฆฌ ํน์ง
- throw๋ก ๋ฐ์๋ ์์ธ, throws ๋ ๋ผ์จ ์์ธ๋ฅผ ์ก์์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค.
- ์์ธ๋ ๋ฐ๋์ ์ก์์ ์ฒ๋ฆฌํด์ผ ํ๋ค.
- ์ปดํ์ผ์์ธ๋ ๋ฐ๋์ try~catch๋ฅผ ํด์ผ ํ์ง๋ง, Runtime Exception์ ์ฝ๋ฉ ์ ๋ฐ๋์ try~catch๋ฅผ ํ์ง ์์๋ ๋๋ค.
try {
//์คํ ํ๋ก๊ทธ๋จ์ด ์์ฑ
//์์ธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฝ๋
} catch(์์ธํ์
1) {
//try๋ธ๋ก ์์์ ์์ธ ํ์
1์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ ์ฝ๋
} catch(์์ธํ์
2) {
//try๋ธ๋ก ์์์ ์์ธ ํ์
2๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ ์ฝ๋
} finally {
//์์ธ๊ฐ ๋ฐ์ํด๋ ์คํํ๊ณ , ์์ธ๊ฐ ๋ฐ์ํ์ง ์์๋ ์คํ๋๋ ์ฝ๋
}
try : ์์ธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ฒ์๋ฅผ ์ง์ ํ๋ ๋ธ๋ก์ด๋ค.
try ๋ธ๋ก์ ์ต์ํ ํ๋์ catch ๋ธ๋ก์ด ์์ด์ผ ํ๋ฉฐ, catch ๋ธ๋ก์ try ๋ธ๋ก ๋ค์์ ์์นํ๋ค.
catch : ๋ธ๋ก์ ๋งค๊ฐ๋ณ์๋ ์์ธ ๊ฐ์ฒด๊ฐ ๋ฐ์ํ์ ๋ ์ฐธ์กฐํ๋ ๋ณ์๋ช
์ผ๋ก
๋ฐ๋์ java.lang.Throwable ํด๋์ค์ ํ์ ํด๋์ค ํ์
์ผ๋ก ์ ์ธ๋์ด์ผ ํ๋ค.
finally : ์ด ๋ธ๋ก์ ํ์ ๋ณ๋ก์ด ์๋๋ฉฐ, finally ๋ธ๋ก์ catch ์ ๋ฌด์ ์๊ด ์์ด ๋ฌด์กฐ๊ฑด ์ํ๋๋ค.
์ฃผ๋ก IO ๋๋ Connection์ close() ํ๋๋ฐ ์ฌ์ฉ๋๋ค.
๐ค์ฌ๋ฌ ๊ฐ์ ์์ธ์ฒ๋ฆฌ ํด๋์ค๋ก ์์ธ๋ฅผ ์ฒ๋ฆฌํ ๋์๋ ํ์ํด๋์ค -> ์์ํด๋์ค ์์๋๋ก
catch ์ฒ๋ฆฌํด์ผ ํ๋ค. ( ๋ถ๋ชจ์์ธ์ฒ๋ฆฌ ํด๋์ค๋ ๋ชจ๋ ์์ธ๋ฅผ ๋ค ์ก์์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ )
ex 1)
try{
์์ธ๋ฐ์์์ ์ฝ๋
}catch(์์์์ธํด๋์ค ๊ฐ์ฒด๋ช
){ //=> ์์์์ธํด๋์ค๊ฐ ์์ธ๋ฅผ ์ก์ง๋ชปํ๋ฉด
}catch(๋ถ๋ชจ์์ธํด๋์ค ๊ฐ์ฒด๋ช
){ // ๋ถ๋ชจ์์ธํด๋์ค๊ฐ ์์ธ๋ฅผ ์ก๋๋ค.
ex 2)
try{
์์ธ๋ฐ์์์ ์ฝ๋
}catch(๋ถ๋ชจ์์ธํด๋์ค ๊ฐ์ฒด๋ช
){ //=> ๋ถ๋ชจ์์ธํด๋์ค๊ฐ ๋ชจ๋ ์์ธ๋ฅผ ์ก๋๋ค.
}catch(์์์์ธํด๋์ค ๊ฐ์ฒด๋ช
){ // ๋ฐ๋ผ์ ์๋ ์์์์ธ๋ ๋ถ๋ชจ๊ฐ ๋จผ์ ์์ธ๋ฅผ ์ก๊ธฐ ๋๋ฌธ์ ์์ธ๋ฅผ
// ์ก์ ์ ์๋ค. => ๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์.
try-catch-finally ์์ธ ์ฌ์ฉ์์ )
package day0725;
import javax.swing.JOptionPane;
/**
* RuntimeException : ์ฝ๋์์ฑ ์ ๋ฐ์๋๋ ์์ธ๋ฅผ JVM์ด ์๋์ผ๋ก try~catch ์ฒ๋ฆฌํ์ฌ ์์ธ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํด์ฃผ๋ ์์ธ.
* ( ์ฝ๋ ์์ฑ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ๋์น๊ธฐ ์ฝ๋ค. )
*
* @author user
*
*/
public class UseRuntimeException {
// ์ซ์ ๋๊ฐ ์
๋ ฅ ๋ฐ์์ ๋๋ ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์ผ
public UseRuntimeException() {
String stringNum1 = JOptionPane.showInputDialog("์ซ์ ์
๋ ฅ");
String stringNum2 = JOptionPane.showInputDialog("๋๋ ์ซ์ ์
๋ ฅ");
int intNum1 = 0;
int intNum2 = 0;
int intResult = 0;
try { // catch๋ ์๊ธฐ๋ ๊ด๋ จ์ด ์๋๊ฒ ์๋๋ฉด ์์ก์
intNum1 = Integer.parseInt(stringNum1);
intNum2 = Integer.parseInt(stringNum2);
intResult = intNum1 / intNum2; // ์์ธ๋ฐ์ ์์ ์ฝ๋ 1.์์ธ๋ฐ์
// ์ ์์คํ๋์์ ๋ ์ ๊ณตํ ์ฝ๋ : ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์คํ๋์ง ์๋๋ค.
System.out.printf(" %d / %d = %d ", intNum1, intNum2, intResult); // inReseult ์ ์ ๋บ
} catch (ArithmeticException ae) {
// 2.์์ธ๊ฐ ๋ฐ์ํ์ ๋ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ ์ฝ๋์ด๋ค.
System.err.println("0์ผ๋ก ๋๋ ์ ์์ด");
} catch (NumberFormatException nfe) { // ๊ด๋ จ์๋ catch๋ฌธ ์ถ๊ฐํด์ผํจ
System.err.println("์ซ์๋ก ๋ณํํ ์ ์๋ ๋ฌธ์์ด์ด ์
๋ ฅ๋์์ต๋๋ค.");
} catch (Exception e) {
System.out.println("์์์ด ๋์น ์์ธ๋ฅผ ์ก๊ธฐ ์ํ ๋ถ๋ชจ ์์ธ");
System.out.println("๊ฐ๋จํ ๋ฉ์์ง" + e.getMessage()); // ์์ธ๊ฐ ๋ฐ์ํ ์ค์ ์ ์ ์๋ค.
System.out.println("์์ธ๊ฐ์ฒด๋ช
๊ณผ ๊ฐ๋จํ ๋ฉ์์ง" + e); // ์์ธ๊ฐ ๋ฐ์ํ ์ค์ ์ ์ ์๋ค.
e.printStackTrace(); // ์์ธํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
} finally {
// ๋ฐ๋์ ์คํ๋์ด์ผํ ์ฝ๋
System.out.println("\n์ฌ์ฉํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค");
} // end finally
}// UseRuntimeException
public static void main(String[] args) {
new UseRuntimeException();
}// main
}// class
๊ฒฐ๊ณผ 1 )
๊ฒฐ๊ณผ 2 ) ๋ฌธ์์ด์ ์ ๋ ฅํ๋ค๋ฉด?
๐งธ throws ์์ธ
์์ธ๊ฐ ๋ฐ์ํ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ณณ์์ ์ฒ๋ฆฌ ( throws )
=> throws๋ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์์๋ฉ์๋๋ก ์์ธ๋ฅผ ๋์ง๋ค.
โ throws์ ํน์ง
- method์์์ ๋ฐ์ํ ์์ธ๋ฅผ ํธ์ถํ ๊ณณ์์ ์ฒ๋ฆฌํ๋๋ก ๋ฐ์๋ ์์ธ๋ฅผ ๋์ง๋ ๊ฒ์ด๋ค.
- method๋ฅผ ์ ์ํ ๋ ๊ฐ์ฅ ๋ค์ ๋ถ์ฌ์ ์ ์ํ๋ค.
- ํธ์ถํ ๊ณณ์์๋ ๋ฐ์๋ ์์ธ๋ฅผ try~catch๋ก ์ก์์ ์ฒ๋ฆฌํ๋ค.
โ throws์ ์ฅ์
- ์์ธ๋ฐ์์ฝ๋์ ์์ธ์ฒ๋ฆฌ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ์ฌ ์์ฑํ ์ ์๋ค. ( ์ฝ๋์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ ์ ์๋ค. )
- method๋ฅผ ํธ์ถ ํ์ ๋ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ๋๋ต์ ์ผ๋ก ์ ์ ์๋ค.
public class ExceptionTest {
public static void main(String[] args) {
try {
myException();
} catch (Exception e) {
e.printStackTrace();
System.out.println("MyClass์์ ์์ธ๊ฐ ๋ฐ์ํ์์ต๋๋ค.");
}
}//end try
static public void myException() throws Exception {
throw new Exception();
}
}//end
์์ธ๊ฐ ๋ฐ์ํ ๋ฉ์๋๋ myException์ด์ง๋ง throws Exception์ ์ฌ์ฉํ์ฌ ํธ์ถํ ๊ณณ์์ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๊ฒ ์์ธ๋ฅผ ๋๊ฒจ์ฃผ์๋ค.
Exception์ ํธ์ถํ๋ ๊ณณ์ main์ด๊ณ , ๋์ ธ์ง ์์ธ๋ฅผ catch์์ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ ์๋ค.
๐งธ throw ์์ธ
๊ฐ์ ๋ก ์์ธ๋ฅผ ๋ฐ์์์ผ์ ์ฒ๋ฆฌ ( throw )
=> throw๋ ์์ธ๋ฅผ ๊ฐ์ ๋ก ๋ฐ์์ํจ ํ, ์์ ๋ธ๋ญ์ด๋ catch๋ฌธ์ผ๋ก ์์ธ๋ฅผ ๋์ง๋ค.
โ throw ์์ธ์ฒ๋ฆฌ ํน์ง
- ํน์ ์ํฉ์์ ์์ธ๋ฅผ ๊ฐ์ ๋ก ๋ฐ์์์ผ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค.
- ์ฌ์ฉ์์ ์ ์์ธ์ฒ๋ฆฌํด๋์ค์ ์ฃผ๋ก ๊ฐ์ด ์ฌ์ฉํ๋ค.
- throw๋ก ๋ฐ์๋ ์์ธ๋ try~catch๋ก ๋ฐ๋ก ์ฒ๋ฆฌํ๋ , ๋์ง๋ ( throws = ๊ถ์ฅ ) ๋ฐ๋์ ์ฒ๋ฆฌํด์ผ ํ๋ค.
package day0725;
public class ExceptionTest {
public static void main(String[] args) {
try {
myException();
} catch (Exception e) {
e.printStackTrace();
System.out.println("MyClass์์ ์์ธ๊ฐ ๋ฐ์ํ์์ต๋๋ค.");
}
}//end try
static public void myException() {
try {
//exception์ ๊ฐ์ ๋ก ๋ฐ์
throw new Exception();
}catch(Exception e) {
e.printStackTrace();
System.out.println("MyException์์ ์์ธ๊ฐ ๋ฐ์ํ์์ต๋๋ค.");
}
}
}//end
์ ์์ ๋ ํน์ ์ํฉ์์ ์์ธ๋ฅผ ๊ฐ์ ์ ์ผ๋ก ๋ฐ์์ํค๋ ๊ฒ์ด๋ค.
main์์ myException๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ์ฌ๊ธฐ์ throw๋ฅผ ํตํด Exception์ ๊ฐ์ ๋ก ๋ฐ์์ํค๊ณ ์๋ค.
๋๋ฌธ์ catch๋ก ์ฒ๋ฆฌ๊ฐ ๋์ ธ์ง๊ณ , ์ฌ๊ธฐ์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ค.
๐งธ์ฌ์ฉ์ ์ ์ ์์ธ
์ฌ์ฉ์ ์์ธ๋ฅผ ์์ฑํ์ฌ ์ฒ๋ฆฌ
=> Exception์ ์์๋ฐ์์ ์ฌ์ฉ์ ์ ์ ์์ธ๋ฅผ ๋ง๋ค ์ ์๋ค.
์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค๋ ์ปดํ์ผ๋ฌ๊ฐ ์ฒดํฌํ๋ ์ผ๋ฐ ์์ธ๋ก ์ ์ธํ ์๋, ์คํ ์์ธ๋ก ์ ์ธํ ์๋ ์๋ค.
๊ฐ๊ฐ์ Exception, RuntimeException์ ์์ํด์ ์์ฑํ๋ฉด ๋๋ค.
โ ์ฌ์ฉ์์ ์ ์์ธ์ฒ๋ฆฌ ํน์ง
- java์์ ์ ๊ณตํ๋ ์์ธ์ฒ๋ฆฌํด๋์ค๊ฐ ๊ตฌํํ๋ ์ ๋ฌด์ ๋ง๋ ํด๋์ค๊ฐ ์๋ค๋ฉด ๊ตฌํํ๋ ์ ๋ฌด์ ์ฉ์ด๋ก ์์ธ์ฒ๋ฆฌ ํด๋์ค๋ฅผ ์์ฑํ๋ค.
- ๊ฐ๋ ์ฑ ํฅ์.
์ฌ์ฉ๋ฒ)
//์ผ๋ฐ ์์ธ๋ก ์ ์ธ ์ : Exception ์์ก
//์คํ ์์ธ๋ก ์ ์ธ ์ : RuntimeException ์์
public class XXXException extends [ Exception | RuntimeException ] {
public XXXException() {}
public XXXException(String message) { super(message); }
}
//์์ ์๋ ๋ ๊ฐ๋ฅผ ์ ์ธํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
//=> ํ๋๋ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์ , ๋ค๋ฅธ ํ๋๋ ์์ธ ๋ฐ์ ์์ธ (์์ธ ๋ฉ์์ง)๋ฅผ
//์ ๋ฌํ๊ธฐ ์ํด String ํ์
์ ๊ฐ๊ฐ ๋ณ์๋ฅผ ๊ฐ๋ ์์ฑ์์ด๋ค.
01. https://ktko.tistory.com/์๋ฐ์ ์์ธ์ฒ๋ฆฌ ์ ์ฒด ์์ฝ ์ค๋ช
์๋ฐ ์์ธ์ฒ๋ฆฌ(Exception handling)
์๋ฐ์ ์์ธ ์ฒ๋ฆฌ(Exception handling) ํ๋ก๊ทธ๋จ์ด ์คํ ์ค ์ด๋ค ์์ธ์ ์ํด์ ์ค์๋์ ํ๊ฑฐ๋ ๋น์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฒ์ ์๋ฌ ๋๋ ์ค๋ฅ๋ผ๊ณ ํ๊ณ ํฉ๋๋ค. ์ด๋ฐ ๊ฒ๋ค์ ๋ฐ์ ์์ ์ ๋ฐ๋ผ ๋ ๊ฐ์ง
ktko.tistory.com
https://hyeri0903.tistory.com/์๋ฐ ์ปดํ์ผ & ๋ฐํ์ ์๋ฌ ์ค๋ช
[JAVA] ์๋ฐ ์ค๋ฅ, ์๋ฌ (Error) ์ข ๋ฅ
1. ์ปดํ์ผ ์๋ฌ (Compillation Error) - ์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ ๋ฐ๊ฒฌ, ์ปดํ์ผ๋ฌ๊ฐ ์๋ฌ ๋ฉ์์ง ์ถ๋ ฅ - ์๋ฌ ๋ฐ์ ์์ธ : ๋ฌธ๋ฒ ์ค๋ฅ - ์) ๋ง์ถค๋ฒ, ๋ฌธ์ฅ๋ถํธ(;), ์ ์ธ๋์ง ์์ ๋ณ์ ์ฌ์ฉ ๋ฑ 2. ๋ฐํ์ ์๋ฌ (Ru
hyeri0903.tistory.com
02. https://tlatmsrud.tistory.com/์๋ฐ Throw,Throws ์์
[Java] ์์ธ์ฒ๋ฆฌ, Throw, Throws๋ / ์์ธ์ ์๋ฌ์ ์ฐจ์ด / ์์
1. ๊ฐ์ ์คํฐ๋๋ก File ์ ๋ก๋, ๋ค์ด๋ก๋ ๋ก์ง์ ์์ฑํ๋ ๋์ค, ํน์ ๋ถ๋ถ์ ๋นจ๊ฐ์ค์ด ๋ฑ์ฅํ๋ค. ์์ฐ์ค๋ฝ๊ฒ ๋ง์ฐ์ค ๊ฐ์ ธ๊ฐ๋ณด๋ Exception!. ๋ณ์๊ฐ ์์ด add thrwos declaration ํด๋ฆญ. ์ํฉ์ข ๋ฃ. ์ด์ฒ๋ผ
tlatmsrud.tistory.com
https://ktko.tistory.com/entry/์๋ฐ ์์ธ์ฒ๋ฆฌ ์์
์๋ฐ ์์ธ์ฒ๋ฆฌ(Exception handling)
์๋ฐ์ ์์ธ ์ฒ๋ฆฌ(Exception handling) ํ๋ก๊ทธ๋จ์ด ์คํ ์ค ์ด๋ค ์์ธ์ ์ํด์ ์ค์๋์ ํ๊ฑฐ๋ ๋น์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฒ์ ์๋ฌ ๋๋ ์ค๋ฅ๋ผ๊ณ ํ๊ณ ํฉ๋๋ค. ์ด๋ฐ ๊ฒ๋ค์ ๋ฐ์ ์์ ์ ๋ฐ๋ผ ๋ ๊ฐ์ง
ktko.tistory.com
https://catsbi.oopy.io/์๋ฐ ์์ธ์ฒ๋ฆฌ ์์
์๋ฐ ์์ธ์ฒ๋ฆฌ(Exception handling)
์๋ฐ์ ์์ธ ์ฒ๋ฆฌ(Exception handling) ํ๋ก๊ทธ๋จ์ด ์คํ ์ค ์ด๋ค ์์ธ์ ์ํด์ ์ค์๋์ ํ๊ฑฐ๋ ๋น์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฒ์ ์๋ฌ ๋๋ ์ค๋ฅ๋ผ๊ณ ํ๊ณ ํฉ๋๋ค. ์ด๋ฐ ๊ฒ๋ค์ ๋ฐ์ ์์ ์ ๋ฐ๋ผ ๋ ๊ฐ์ง
ktko.tistory.com
03. https://koreanfoodie.me/์๋ฐ ์ฌ์ฉ์ ์์ธ ์ ์ํ์ฌ ์ฌ์ฉํ๊ธฐ
10-3. ์๋ฐ ์์ธ์ฒ๋ฆฌ : ์ฌ์ฉ์ ์ ์ ์์ธ, ์์ธ ์ ๋ณด ์ป๊ธฐ(getMessage, printStackTrace)
์ฌ์ฉ์ ์ ์ ์์ธ์ ์์ธ ๋ฐ์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์๋ฐ ํ์ค API์์ ์ ๊ณตํ๋ ์์ธ ํด๋์ค๋ง์ผ๋ก๋ ๋ค์ํ ์ข ๋ฅ์ ์์ธ๋ฅผ ํํํ ์๊ฐ ์๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์๋น์ค์ ๊ด๋ จ๋ ์์ธ๋ฅผ ์ ํ
koreanfoodie.me