โโถ ์์ธ ์ฒ๋ฆฌ ๋ฏธ๋ฃจ๊ธฐ
โ
*์์ธ ์ฒ๋ฆฌ๋ฅผ ๋ฏธ๋ฃจ๋ throws ์ฌ์ฉํ๊ธฐ
์์ธ๋ฅผ ํด๋น ๋ฉ์๋์์ ์ฒ๋ฆฌํ์ง ์๊ณ ๋ฏธ๋ฃฌ ํ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ๋ ๋ถ๋ถ์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ.
-15ํ์ ์ค๋ฅ๊ฐ ๋ฌ๋ค
-์ด๊ฑธ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์
1. ์ฌ๋ฌ ์์ธ๋ฅผ ํ๋ฒ์ ์ฒ๋ฆฌํ๊ธฐ
2. ์์ธ ์ํฉ๋ง๋ค ์ฒ๋ฆฌํ๊ธฐ
3. throws ๋ฉ์๋ ์ถ๊ฐํ๊ธฐ (์์ธ ์ฒ๋ฆฌ ๋ฏธ๋ฃจ๊ธฐ) ๊ถ์ฅ ์ฌํญ์ ์๋. ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ด ๋น์ ์ ์ข ๋ฃ๋จ.
๊ฐ ์๋ค.
โ
โ
โ
*๋ค์ค ์์ธ ์ฒ๋ฆฌ
์ฌ๋ฌ catch๋ฌธ์ ํ๊บผ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๊ฐ catch ๋ธ๋ก์ ๊ฐ๊ฐ์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
์ด๋ค ์์ธ๊ฐ ๋ฐ์ํ ์ง ๋ฏธ๋ฆฌ ์์ ์์ง๋ง ๋ชจ๋ ์์ธ ์ํฉ์ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ค๋ฉด ๋งจ ๋ง์ง๋ง ๋ถ๋ถ์ Exception ํด๋์ค๋ฅผ ํ์ฉํ์ฌ catch ๋ธ๋ก์ ์ถ๊ฐํ๋ค.
package exception;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class ThrowsException {
public Class loadClass(String fileName, String className) throws FileNotFoundException, ClassNotFoundException {
FileInputStream fis = new FileInputStream(fileName);
Class c = Class.forName(className);
return c;
}
public static void main(String[] args) {
ThrowsException test = new ThrowsException();
try {
test.loadClass("a.txt", "java.lang.String");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-Exception ํด๋์ค๋ ๋ชจ๋ ์์ธ ํด๋์ค์ ์ต์์ ํด๋์ค์ด๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ catch ๋ธ๋ก์ ์ ์ธํ ๊ฒ ์ด์ธ์ ์์ธ๊ฐ ๋ฐ์ํ๋๋ผ๋ Exception ํด๋์ค๋ก ์๋ ํ ๋ณํ๋๋ค.
โ
โ
โ
*๋ค์ค ์์ธ ์ฒ๋ฆฌ์์ ์ฃผ์ ์ฌํญ
์์ธ๋ catch๋ฌธ์ ์ ์ธํ ์์๋๋ก ๊ฒ์ฌํ๋ค. ๋ฐ๋ผ์ ๋งจ ์์ catch(Exception e) ๋ฌธ์ฅ์ ์ฐ๋ฉด ๋ฐ์ํ๋ ๋ชจ๋ ์์ธ ํด๋์ค๋ Exception ์์ ํด๋์ค๋ก ์๋ ํ ๋ณํ๋์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๋ฐ๋ผ์ ๊ธฐ๋ณธ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ๋ Exception ํด๋์ค ๋ธ๋ก์ ์ฌ๋ฌ ์์ธ ์ฒ๋ฆฌ ๋ธ๋ก์ ๊ฐ์ฅ ์๋์ ๋์ฌ์ผ ํ๋ค.
โ
โ
โ
*์ฌ์ฉ์ ์ ์ ์์ธ
ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ์ํฉ์์ ํ์์ ๋ฐ๋ผ ์ฌ์ฉ์ ์ ์ ์์ธ ํด๋์ค๋ฅผ ์ง์ ๋ง๋ค๊ณ ์ด๋ฅผ ๋ฐ์์์ผ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
๊ฐ์ฅ ์์ ํด๋์ค์ธ Exception ํด๋์ค์์ ์์๋ฐ๋๊ฒ ์ข๋ค.
โ
package exception;
public class IDFormatTest {
private String userID;
public String getUserID() {
return userID;
}
// ์์ด๋์ ๋ํ ์ ์ฝ์กฐ๊ฑด ๊ตฌํ
public void setUserID(String userID) throws IDFormatException { // IDFormatException ์์ธ๋ฅผ setUserID() ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ์ฒ๋ฆฌํ๋๋ก ๋ฏธ๋ฃธ
if (userID == null) {
throw new IDFormatException("์์ด๋๋ null์ผ ์ ์์ต๋๋ค");
} else if (userID.length() < 8 || userID.length() > 20) {
throw new IDFormatException("์์ด๋๋ 8์ ์ด์ 20์ ์ดํ๋ก ์ฐ์ธ์");
}
this.userID = userID;
}
public static void main(String[] args) {
IDFormatTest test = new IDFormatTest();
String userID = null;
try { // ์์ด๋ ๊ฐ์ด null์ธ ๊ฒฝ์ฐ
test.setUserID(userID);
} catch (IDFormatException e) {
System.out.println(e.getMessage());
}
userID = "1234567";
try { // ์์ด๋ ๊ฐ์ด 8์ ์ดํ์ธ ๊ฒฝ์ฐ
test.setUserID(userID);
} catch (IDFormatException e) {
System.out.println(e.getMessage());
}
}
}
โ<์คํ ๊ฒฐ๊ณผ>
โ
โ
โ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ๋๋ ๋ก๊ทธ๋ฅผ ์ ๋จ๊ธฐ์.
์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ฝ๋๋ฅผ ์์๋๋ก ๋ฐ๋ผ๊ฐ๋ฉฐ ํ์ธํ ์ ์๊ณ ์์ธ์ ์ฐพ์ ์ ์๋ค.
โ
โ
โ
๋ ํผ์ ์ฝ๋ฉ) ๋น๋ฐ๋ฒํธ ์์ธ ํด๋์ค ๋ง๋ค๊ธฐ
PasswordException์ ๋ง๋ค์ด ๋ณด์. ์์ธ ์ํฉ์ ๋น๋ฐ๋ฒํธ๊ฐ null์ธ ๊ฒฝ์ฐ, ๋ฌธ์์ด๋ก๋ง ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ, 5์ ์ดํ์ธ ๊ฒฝ์ฐ์ด๋ค. ํํธ) ๋ฌธ์์ด๋ก๋ง ์ด๋ฃจ์ด์ก๋์ง ์์๋ณด๋ ค๋ฉด String์ matches( ) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. |
โ
<๋ด๊ฐ ํ ๊ฒ>
โ
PasswordException.java (์ฌ์ฉ์ ์ ์ ์์ธ ๊ตฌํ)
package test;
public class PasswordException extends Exception {
public PasswordException(String password) {
super(password);
}
}
PasswordTest.java
package test;
public class PasswordTest {
private String password;
public String getpassword() {
return password;
}
public void setPassword(String password) throws PasswordException {
// ์กฐ๊ฑด์
if (password == null) {
throw new PasswordException("๋น๋ฐ๋ฒํธ๋ null์ผ ์ ์์ต๋๋ค.");
} else if (password.length() < 6) {
throw new PasswordException("๋น๋ฐ๋ฒํธ๋ 6์๋ฆฌ ์ด์์ผ๋ก ๋ง๋์ธ์.");
} else if (password.matches("[a-zA-Z]+")) { // ์ ๊ท์
throw new PasswordException("๋น๋ฐ๋ฒํธ๋ ์๋ฌธ์๋ ์ซ์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.");
}
this.password = password; // ์ ์กฐ๊ฑด์์ ๋ค ๋ง์กฑํ๋ฉด password ๊ฐ ํ ๋น
}
public static void main(String[] args) {
PasswordTest test = new PasswordTest();
// ๋น๋ฐ๋ฒํธ๊ฐ null์ผ ๋
String password = null;
try {
test.setPassword(password);
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
System.out.println(test.getpassword());
// ๋น๋ฐ๋ฒํธ๊ฐ 6์๋ฆฌ ์ด์์ด์ง๋ง ๋ฌธ์์ด์ผ ๋
password = "abcdefg";
try {
test.setPassword(password);
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
System.out.println(test.getpassword());
// ๋น๋ฐ๋ฒํธ๊ฐ 6์๋ฆฌ ๋ฏธ๋ง์ผ ๋
password = "abcd";
try {
test.setPassword(password);
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
// ๋น๋ฐ๋ฒํธ๊ฐ ์กฐ๊ฑด์ ๋ถํฉํ ๋
password = "abc123";
try {
test.setPassword(password);
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
}
}
<์คํ ๊ฒฐ๊ณผ>
โ<์ ์๋์ด ํ ๊ฒ>
package test;
public class PasswordTest {
private String password;
public String getpassword() {
return password;
}
public void setPassword(String password) throws PasswordException {
// ์กฐ๊ฑด์
if (password == null) {
throw new PasswordException("๋น๋ฐ๋ฒํธ๋ null์ผ ์ ์์ต๋๋ค.");
} else if (password.length() < 6) {
throw new PasswordException("๋น๋ฐ๋ฒํธ๋ 6์๋ฆฌ ์ด์์ผ๋ก ๋ง๋์ธ์.");
} else if (password.matches("[a-zA-Z]+")) { // ์ ๊ท์
throw new PasswordException("๋น๋ฐ๋ฒํธ๋ ์๋ฌธ์๋ ์ซ์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.");
}
this.password = password; // ์ ์กฐ๊ฑด์์ ๋ค ๋ง์กฑํ๋ฉด password ๊ฐ ํ ๋น
}
public static void main(String[] args) {
PasswordTest test = new PasswordTest();
// ๋น๋ฐ๋ฒํธ๊ฐ null์ผ ๋
String password = null;
try {
test.setPassword(password);
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
System.out.println(test.getpassword());
// ๋น๋ฐ๋ฒํธ๊ฐ 6์๋ฆฌ ์ด์์ด์ง๋ง ๋ฌธ์์ด์ผ ๋
password = "abcdefg";
try {
test.setPassword(password);
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
System.out.println(test.getpassword());
// ๋น๋ฐ๋ฒํธ๊ฐ 6์๋ฆฌ ๋ฏธ๋ง์ผ ๋
password = "abcd";
try {
test.setPassword(password);
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
System.out.println(test.getpassword());
// ๋น๋ฐ๋ฒํธ๊ฐ ์กฐ๊ฑด์ ๋ถํฉํ ๋
password = "abc123";
try {
test.setPassword(password);
} catch (PasswordException e) {
System.out.println(e.getMessage());
}
System.out.println(test.getpassword());
}
}
<์คํ ๊ฒฐ๊ณผ>
โ
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java-๊ธฐ์ด] ํ์ค ์ ์ถ๋ ฅ (0) | 2021.02.22 |
---|---|
[Java-๊ธฐ์ด] ์๋ฐ ์ ์ถ๋ ฅ (Stream) (0) | 2021.02.22 |
[Java-๊ธฐ์ด] try-with-resources๋ฌธ (0) | 2021.02.22 |
[Java-๊ธฐ์ด] ์ปดํ์ผ๋ฌ์ ์ํด ์์ธ๊ฐ ์ฒดํฌ๋๋ ๊ฒฝ์ฐ (0) | 2021.02.22 |
[Java-๊ธฐ์ด] ์์ธ ํด๋์ค (0) | 2021.02.22 |
๋๊ธ