CustomException
์ปค์คํ ์์ธ(Custom Exception)
์ผ๋ฐ ์์ธ๋ก ์ ์ธํ ๊ฒฝ์ฐ Exception์ ์์๋ฐ์ ๊ตฌํ
์คํ ์์ธ๋ก ์ ์ธํ ๊ฒฝ์ฐ์๋ RuntimeException์ ์์๋ฐ์ ๊ตฌํ
์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค๋ ์ปดํ์ผ๋ฌ๊ฐ ์ฒดํฌํ๋ ์ผ๋ฐ ์์ธ๋ก ์ ์ธํ ์๋ ์๊ณ , ์ปดํ์ผ๋ฌ๊ฐ ์ฒดํฌํ์ง ์๋ ์คํ ์์ธ๋ก ์ ์ธํ ์๋ ์์ต๋๋ค.
- ์ผ๋ฐ ์์ธ๋ก ์ ์ธํ ๊ฒฝ์ฐ Exception์ ์์ํ๋ฉด ๋๊ณ , ์คํ ์์ธ๋ก ์ ์ธํ ๊ฒฝ์ฐ์๋ RuntimeException์ ์์ํ๋ฉด ๋ฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค ์ด๋ฆ์ Exception์ผ๋ก ๋๋๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค ์์ฑ ์ ์์ฑ์๋ ๋ ๊ฐ๋ฅผ ์ ์ธํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค.
- ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์
- ์์ธ ๋ฐ์ ์์ธ(์์ธ ๋ฉ์์ง)์ ์ ๋ฌํ๊ธฐ ์ํด String ํ์ ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ๋ ์์ฑ์
์์ธ ๋ฉ์์ง์ ์ฉ๋๋ catch {} ๋ธ๋ก์ ์์ธ์ฒ๋ฆฌ ์ฝ๋์์ ์ด์ฉํ๊ธฐ ์ํด์์ ๋๋ค.
์์
RuntimeException์ ์์๋ฐ์ ์์ฑํ ์ฌ์ฉ์ ์ ์ ์์ธ์ ๋๋ค.
public class CustomException extends RuntimeException {
// 1. ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์
CustomException() {
}
// 2. ์์ธ ๋ฐ์ ์์ธ(์์ธ ๋ฉ์์ง)์ ์ ๋ฌํ๊ธฐ ์ํด String ํ์
์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ๋ ์์ฑ์
CustomException(String message) {
super(message); // RuntimeException ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํฉ๋๋ค.
}
}
์์ธ ๋ฐ์์ํค๊ธฐ
throw new ์์ธ();
throw new ์์ธ("๋ฉ์์ง");
์ปค์คํ ์์ธ ํ์ฉ
๊ฐ์ ๋ก ์์ธ๋ฅผ ๋ฐ์์์ผ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ณณ์์ ์ปค์คํ ์์ธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
public static void main(String[] args) {
try{
test();
} catch (CustomException e) {
System.out.println("์ปค์คํ
์์ธ ํ
์คํธ");
}
}
public static void test() throws CustomException {
throw new CustomException("์์ธ ํ
์คํธ ์
๋๋ค.");
}
์์ธ ์ ๋ณด ์ป๊ธฐ
try ๋ธ๋ก์์ ์์ธ๊ฐ ๋ฐ์๋๋ฉด ์์ธ ๊ฐ์ฒด๋ catch ๋ธ๋ก์ ๋งค๊ฐ ๋ณ์์์ ์ฐธ์กฐํ๊ฒ ๋๋ฏ๋ก ๋งค๊ฐ ๋ณ์๋ฅผ ์ด์ฉํ๋ฉด ์์ธ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ ์ ์์ต๋๋ค. ๋ชจ๋ ์์ธ ๊ฐ์ฒด๋ Exception ํด๋์ค๋ฅผ ์์ํ๊ธฐ ๋๋ฌธ์ Exception์ด ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋๋ค์ ๋ชจ๋ ์์ธ ๊ฐ์ฒด์์ ํธ์ถํ ์ ์์ต๋๋ค. Exception๋ Throwable๋ฅผ ์์๋ฐ๊ณ Throwable์ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฃผ๋ก ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ getMessage()์ printStackTrace()์ ๋๋ค.
public class Exception extends Throwable {
public Exception() {
super();
}
public Exception(String message) {
super(message);
}
// (. . .) ์๋ต
}
public class Throwable implements Serializable {
public String getMessage() {
return detailMessage;
}
public void printStackTrace() {
printStackTrace(System.err);
}
// (. . .) ์๋ต
}
getMessage()
String ํ์ ์ ๋งค๊ฐ๋ณ์ ๋ฉ์์ง๋ฅผ ๊ฐ๋ ์์ฑ์๋ฅผ ์ด์ฉํ์๋ค๋ฉด, ๋ฉ์์ง๋ ์๋์ ์ผ๋ก ์์ธ ๊ฐ์ฒด ๋ด๋ถ์ ์ ์ฅ๋๊ฒ ๋๋๋ฐ ์ด ๋ฉ์์ง๋ฅผ ๋ฆฌํดํ๋ ํจ์์ ๋๋ค. ์์ธ ๋ฉ์์ง์ ๋ด์ฉ์๋ ์ ์์ธ๊ฐ ๋ฐ์ํ๋์ง์ ๋ํ ๊ฐ๋จํ ์ค๋ช ์ด ํฌํจ๋ฉ๋๋ค.
printStackTrace()
์์ธ ๋ฐ์ ์ฝ๋๋ฅผ ์ถ์ ํด์ ๋ชจ๋ ์ฝ์์ ์ถ๋ ฅํฉ๋๋ค. ์ด๋ค ์์ธ๊ฐ ์ด๋์์ ๋ฐ์ํ๋์ง ์์ธํ๊ฒ ์ถ๋ ฅํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ ํ ์คํธํ๋ฉด์ ์ค๋ฅ๋ฅผ ์ฐพ์ ๋ ํ์ฉํฉ๋๋ค.
์ปค์คํ ์์ธ ํ์ฉ
public static void main(String[] args) {
try{
test();
} catch (CustomException e) {
System.out.println("์ปค์คํ
์์ธ ํ
์คํธ");
System.out.println(e.getMessage());
e.printStackTrace();
}
}
public static void test() throws CustomException {
throw new CustomException("์์ธ ํ
์คํธ ์
๋๋ค.");
}
์ฐธ๊ณ ๋ธ๋ก๊ทธ: sayit.tistory
Leave a comment