* ์์ธ(exception)
: ๋ฌธ๋ฒ์ ์ผ๋ก ์๋ชป๋ ๊ฒ์ด ์๋๋ผ, ํ๋ก๊ทธ๋จ ์คํ์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ํฌ์ ์๋ค๋ ๊ฒ
- ์๋ฌ : ํ๋ก๊ทธ๋จ ์์ฒด์ ์ค๋ฅ
- ์์ธ : ํ๋ก๊ทธ๋จ ์คํ์ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ
: ์์ธ๊ฐ ๋ฐ์๋ ์ ์๋ ๋ช ๋ น์ ๋ํด ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋๊ฒ์ด ํ์!
- ์ฌ๊ฐํ ํ๋ก๊ทธ๋จ ์์ธ์ธ ๊ฒฝ์ฐ "์๋ฌ"๋ก ํ๊ธฐ : ํ๋ก๊ทธ๋จ ์คํ ๋ถ๊ฐ
- ๊ฐ๋ฒผ์ด ํ๋ก๊ทธ๋จ ์์ธ์ธ ๊ฒฝ์ฐ "์์ธ"๋ก ํ๊ธฐ : ํ๋ก๊ทธ๋จ ์คํ ๊ฐ๋ฅ, JVM์ ์ํด ์๋์ ์ผ๋ก ์์ธ์ฒ๋ฆฌ
* ์์ธ์ฒ๋ฆฌ
: ํ๋ก๊ทธ๋จ ์ฌ์ฉ์์๊ฒ ๋ฉ์ธ์ง๋ฅผ ์ ๊ณต or ๊ฐ๋ฐ์์๊ฒ ์๋ฌ๋ก๊ทธ๋ฅผ ์ ๊ณต
: try - catch๋ฌธ ํ์ฉ
* ์์ธ์ฒ๋ฆฌ์ ๊ฐ
: ์์ธ์ฒ๋ฆฌ๋ฅผ ์์ธ๊ฐ ๋ฐ์ํ ํด๋น ํด๋์ค๋ ๋ฉ์๋์์ ๋น์ฅ ์ฒ๋ฆฌํ์ง ์์
: ์ผ์ข ์ ์ฑ ์์ ๊ฐ๋ก ๋์ค์ ์ผ๊ด์ฒ๋ฆฌ ๊ฐ๋ฅ
: throws ๋ฐ์์์ธ๋ช (=์์ธํด๋์ค๋ช ๋์ด๊ฐ๋ฅ)
=> "์ด ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ๊ฒ์ ์์ง๋ง, ๋๋ ์ฒ๋ฆฌ ์ํ๊ณ ๋๊ธธ๊บผ์ผ~
๋๊ฐ ๋์ค์ ์ด๊ฑฐ ์ฌ์ฉํ๋ ค๋ฉด ๊ทธ๋ ์์ธ ์ฒ๋ฆฌํด~"
* ์์ธํด๋์ค ์์ฑ๊ณผ ํ์ฉ
: ๊ฐ ํด๋์ค๋ ๋ฉ์๋์์ ์ ๋ ์์ธ์ฒ๋ฆฌ ๊ฐ๋ฅ
: ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ ํด๋์ค๋ฅผ ์ง์ ์์ฑ ํ ์ ์ฉํ ํด๋์ค๋ ๋ฉ์๋์์ ์ฐธ์กฐ
→ ํ๋ฒ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ : ๋ํํ๋ก๊ทธ๋จ์ ์ ํฉ
1) ์์ธํด๋์ค ์ง์ ์์ฑ์ extends Exception ํ์
2) ์์ธํด๋์ค ์ฐธ์กฐ๋ฅผ ์ํ ์ throws new ์์ฑ์์ธํด๋์ค๋ช ;
//์์ธ์ฒ๋ฆฌํด๋์ค : ์์ธํด๋์ค
public class PasswordMissMatchException extends Exception {
// ๋ชจ๋ ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๊ฐ์ฅ ํฐ ํด๋์ค Exception์์ : ์จ๋ฆฌ์ผ ํ๋์์ฑ!
private static final long serialVersionUID = 1L;
//๊ธฐ๋ณธ์์ฑ์
public PasswordMissMatchException() {
// TODO Auto-generated constructor stub
}
//ํ์์์ฑ : ์์ธ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌ๋ฐ์ ๋ณ๊ฒฝํ๋ ์์ฑ์
public PasswordMissMatchException(String message) {
//๋ถ๋ชจํด๋์ค(throw)์ ์์ฑ์๋ฅผ ํธ์ถํ์ฌ ํ๋์ ์ด๊ธฐ๊ฐ๋ถ์ฌ!
super(message); //โ
superํ์!
}
}
// ํค๋ณด๋๋ก ์ ์๋ฅผ ์
๋ ฅ๋ฐ์ ๋น๋ฐ๋ฒํธ์ ๋น๊ตํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ
public class PasswordMatchApp {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
try {
System.out.print("์ ์๋ฅผ ์
๋ ฅํ์ธ์ >> ");
int password=scanner.nextInt();
// ์ง์ ์์ฑํ Exceptionํด๋์ค ํ์ฉ
if (password!=1234) {
throw new PasswordMissMatchException("[Error]๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค.");
}
System.out.println("๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํฉ๋๋ค.");
} catch (InputMismatchException e) {
System.out.println("์ ์๋ง ์
๋ ฅ ๊ฐ๋ฅํฉ๋๋ค.");
} catch (PasswordMissMatchException e) { //์ ์ฒดException์ฒ๋ฆฌ = ์์๋ฐ์ํด๋์คํธ์ถ
System.out.println(e.getMessage());
} finally {
scanner.close();
}
}
}
'Note for moment' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] String, StringBuffer, StringBuilder (0) | 2020.09.05 |
---|---|
[Java] ์๋ฃํ, Wrapperํด๋์ค (0) | 2020.09.05 |
[OOP] ์ถ์ํด๋์ค์ ์ธํฐํ์ด์ค, ๋์ดํ(Enum) (0) | 2020.09.03 |
[OOP] ์ฑ๊ธํค ํด๋์ค(Singleton) (0) | 2020.09.03 |
[Java] final, static (์ ์ ํ๋/์ ์ ๋ฉ์๋), main๋ฉ์๋์ static์ด ๋ถ๋ ์ด์ (0) | 2020.09.03 |
๋๊ธ