Exception๊ณผ Error์ ์ฐจ์ด
์ค๋ฅ(Error): ์์คํ ์ด ์ข ๋ฃ๋์ด์ผ ํ ์์ค์ ์ํฉ๊ณผ ๊ฐ์ด ์์ตํ ์ ์๋ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ์๋ฏธ
์์ธ(Exception): ๊ฐ๋ฐ์๊ฐ ๊ตฌํํ ๋ก์ง์์ ๋ฐ์ํ ์ค์๋ ์ฌ์ฉ์์ ์ํฅ์ ์ํด ๋ฐ์
* ์์ธ์ ๊ฒฝ์ฐ ๋ณ๋์ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ๋ฐฉ์งํ ์ ์๋ค.
Try ~ Catch
public static void main(String[] args) {
FileInputStream is = null;
try { // ์์ธ๊ฐ ๋ ๋งํ ์ฝ๋๋ฅผ try์์ญ์ ์ง์ ํ๋ค.
is = new FileInputStream("number.txt");
int num = 0;
System.out.println("code 1, num: " + num);
int i = 1 / num;
System.out.println("code 2 - ์์ธ ์์: " + i);
return;
} catch (ArithmeticException e) { // try์์ญ์์ ์์ธ๊ฐ ๋ฐ์ํ๋ค๋ฉด Catch๋ฌธ์ ์คํ
System.out.println("code 3 - exception handling ์๋ฃ");
} finally { // try ~ catch๊ฐ ๋๋ ๋ค ์คํ ๋๋ค. ์์ธ ๋ฐ์ ์ ๋ฌด์ ์๊ด์์ด ํญ์ ์คํ
if(is != null) is.close();
System.out.println("code 4 - ์ธ์ ๋ ์คํ");
}
System.out.println("code 5");
}
e.getMessage(): ๋ฐ์ํ ์์ธ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ค.
getCause(): ์์ธ์ ์์ธ์ด ๋๋ Throwable ๊ฐ์ฒด ๋๋ null์ ๋ฐํํ๋ค.
printStackTrace(): ์์ธ๊ฐ ๋ฐ์๋ ๋ฉ์๋๊ฐ ํธ์ถ๋๊ธฐ๊น์ง์ ๋ฉ์๋ ํธ์ถ ์คํ์ ์ถ๋ ฅ(๋๋ฒ๊น ์ฉ)
- ๋ฐํ๊ฐ์ด ์๊ณ , ์์ธ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํด ์ค๋ค.
ํ๋์ try์ ์ฌ๋ฌ ๊ฐ์ catch๋ฅผ ์ถ๊ฐํ ์ ์๋ค.(์์ -> ๋ถ๋ชจ ์์ ๊ถ์ฅ)
|(or) ๊ธฐ๋ฅ์ ์ด์ฉํด ํ๋ฒ์ 2๊ฐ์ง ์ด์์ ์์ธ์ฒ๋ฆฌ๋ ๊ฐ๋ฅํ๋ค.
์ฌ์ฉ ํ ์์์ ๋ฐ๋ฉ์ด ํ์ํ ์์๋ค์ ๋ชจ๋ Closable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์๊ณ , ์ฌ์ฉ ํ close ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ๋ค.
Try ~ with ~ resources
public static void main(String args[]) throws IOException {
try (FileInputStream is = new FileInputStream("trywithresources.txt"); BufferedInputStream bis = new BufferedInputStream(is)) {
int data;
while ((data = bis.read()) != -1) {
System.out.print((char) data);
}
}
}
try๋ฌธ์ ์ฌ์ฉํ ์์์ ์ ์ธํด ์ฃผ๊ณ , ์ฌ์ฉ์ด ๋๋ฌ์ ๋, ์๋์ผ๋ก ๋ฐ๋ฉํด ์ฃผ๋ ๋ฌธ๋ฒ์ด๋ค.
try-catch๋ฅผ ์ด์ฉํ์์ ๋, ์์์ ๋ฐ๋ฉํ๋ ์ฝ๋๋ฅผ ๋ฐ๋์ ๋ช
์๋ฅผ ํด์ผ ํ๋ ๋ถํธํจ์ด ์์ด์(๊ท์ฐฎ์์)
Java7๋ถํฐ ์๊ฒผ๋ค.
์ด ๋ฌธ๋ฒ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์์๋ค์ด Closable์ ๋ถ๋ชจ ํด๋์ค์ธ AutoCloseable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
Throws
public void sell(String isbn, int quantity) throws QuantityException, ISBNNotFoundException {
if(searchByisbn(isbn) == null) throw new ISBNNotFoundException(isbn);
for(int i = 0; i < books.size(); i++) {
if(books.get(i).getQuantity() - quantity < 0) throw new QuantityException();
}
}
}
- method์์ ์ฒ๋ฆฌํด์ผ ํ ํ๋ ์ด์์ ์์ธ๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ์ ๋ฌํ๋ค.(์ฒ๋ฆฌ ์์, ์์ด์ง์ง ์๋๋ค.)
- API๋ ์ฌ์ ์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์์์ ์ ์ธ๋ถ์ ๋ช ์ํ๊ณ ๋์ฒํ๋๋ก ๊ฐ์ํ๋ค.
- ์ค๋ฒ๋ผ์ด๋ฉ ์ ์กฐ์ ํด๋์ค ๋ฉ์๋๊ฐ ๋์ง๋ ์์ธ๋ณด๋ค ๋ถ๋ชจ์ธ ์์ธ๋ฅผ ๋์ง ์ ์๋ค.
์ฌ์ฉ์ ์ ์ ์์ธ
//๋์๊ณ ์ ๋ฒํธ๊ฐ ์กด์ฌํ์ง ์๋ ์์ธ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ํด๋์ค
public class ISBNNotFoundException extends Exception {
private String isbn;
// ๊ณ ์ ๋ฒํธ๋ฅผ ๋ฐ์ ์์ฑํ๋ ์์ฑ์
public ISBNNotFoundException(String isbn) {
super(isbn+"๊ณ ์ ๋ฒํธ๋ ์กด์ฌํ์ง ์์ต๋๋ค.");
this.isbn = isbn;
}
// ์กด์ฌํ์ง ์๋ ๋์ ๊ณ ์ ๋ฒํธ๋ฅผ ๋ฐํํ๋ค.
public String getIsbn() {
return isbn;
}
}
์ด๋ฐ ์์ผ๋ก ์์ธ๋ฅผ ์ง์ ๋ง๋ค์ด์ ์ฌ์ฉํ ์๋ ์๋ค.
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ConcurrentHashMap (0) | 2025.05.17 |
---|---|
[JAVA] File I/O (0) | 2024.07.28 |
[JAVA] Stream API (0) | 2024.07.25 |
[JAVA] Lambda (0) | 2024.07.24 |
[JAVA] Comparable? Comparator? (3) | 2024.07.23 |