์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Spring
- mariadb
- spring security
- ํ์ด์ฌ
- Codeup
- go
- Python
- ์คํ๋ง
- Vue.js
- ์ค๋ธ์
- Gradle
- Postman
- golang
- JPA
- springboot
- ํด๋ฆฐ ์ฝ๋
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ์๊ณ ๋ฆฌ์ฆ
- Git
- ๊ฐ์ฌ์ค
- H2 ์ค์น
- ๋กฌ๋ณต
- thymeleaf
- GitHub
- ํด๋ฆฐ์ฝ๋
- Spring Boot
- ๊ธฐ์ด100์
- ์ฝ๋์
- java
- MySQL
- Today
- Total
nyximos.log
[Java] ์์ธ ์ฒ๋ฆฌ ๋ณธ๋ฌธ
๐ฉ๐ ๋ชฉํ
์๋ฐ์ ์์ธ ์ฒ๋ฆฌ์ ๋ํด ํ์ตํ์ธ์.
๐ฉ๐ป ํ์ตํ ๊ฒ
- ์๋ฐ์์ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ (try, catch, throw, throws, finally)
- ์๋ฐ๊ฐ ์ ๊ณตํ๋ ์์ธ ๊ณ์ธต ๊ตฌ์กฐ
- Exception๊ณผ Error์ ์ฐจ์ด๋?
- RuntimeException๊ณผ RE๊ฐ ์๋ ๊ฒ์ ์ฐจ์ด๋?
- ์ปค์คํ ํ ์์ธ ๋ง๋๋ ๋ฐฉ๋ฒ
๐ฆนโ๏ธ ์๋ฐ์์ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ (try, catch, throw, throws, finally)
์์ธ์ฒ๋ฆฌ exception handling
ํ๋ก๊ทธ๋จ ์คํ ์ ๋ฐ์ํ ์ ์๋ ์์ธ์ ๋ฐ์์ ๋๋นํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ
ํ๋ก๊ทธ๋จ์ ๋น์ ์ ์ข ๋ฃ๋ฅผ ๋ง๊ณ ์ ์์ ์ธ ์คํ ์ํ๋ฅผ ์ ์งํ ์ ์๋๋ก ํด์ค๋ค.
์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฉด ํ๋ก๊ทธ๋จ์ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ฉฐ
์ฒ๋ฆฌํ์ง ๋ชปํ ์์ธ uncaught exception๋ JVM์ ์์ธ์ฒ๋ฆฌ๊ธฐ๊ฐ ๋ฐ์์ ์์ธ์ ์์ธ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
try - catch - finally
try๋ธ๋ก์์ ๋ฐ์๋ ์์ธ๋ฅผ catch ๋ธ๋ก์์ ์ฒ๋ฆฌํ๋ค.
ํ๋์ try ๋ธ๋ญ ๋ค์์ ์ฌ๋ฌ ์ข ๋ฅ์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ ์ด์์ catch๋ธ๋ญ์ด ์ฌ ์ ์์ผ๋ฉฐ,
์ด ์ค ๋ฐ์ํ ์์ธ์ ์ข ๋ฅ์ ์ผ์นํ๋ ๋จ ํ ๊ฐ์ catch๋ธ๋ญ๋ง ์ํ๋๋ค.
๋ฐ์ํ ์์ธ์ ์ข ๋ฅ์ ์ผ์นํ๋ catch๋ธ๋ญ์ด ์์ผ๋ฉด ์์ธ๋ ์ฒ๋ฆฌ๋์ง ์๋๋ค.
catch๋ธ๋ญ์ ๊ดํธ( )์ ๋ธ๋ญ{ } ๋ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ธ ์๋๋ฐ,
๊ดํธ ๋ด์ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ์์ธ์ ๊ฐ์ ํ์ ์ ์ฐธ์กฐ ๋ณ์ ํ๋๋ฅผ ์ ์ธํด์ผ ํ๋ค.
์์ธ๊ฐ ๋ฐ์ํ๋ฉด, ๋ฐ์ํ ์์ธ์ ํด๋นํ๋ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ๋ง๋ค์ด์ง๋ค.
์์ธ๊ฐ ๋ฐ์ํ ๋ฌธ์ฅ์ด try ๋ธ๋ญ์ ํฌํจ๋์ด ์๋ค๋ฉด ์ด ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ catch ๋ธ๋ญ์ด ์๋์ง ์ฐพ๊ฒ ๋๋ค.
์ฒซ๋ฒ์งธ catch ๋ธ๋ญ๋ถํฐ ์ฐจ๋ก๋๋ก ๋ด๋ ค๊ฐ๋ฉด์ catch ๋ธ๋ญ์ ๊ดํธ ๋ด์ ์ ์ธ๋ ์ฐธ์กฐ๋ณ์์ ์ข ๋ฅ์ ์์ฑ๋ ์์ธํด๋์ค์ ์ธ์คํด์ค์ instanceof ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ๊ฒ์ฌํ๊ฒ ๋๋๋ฐ,
๊ฒฐ๊ณผ๊ฐ true์ธ catch๋ธ๋ญ์ ์ฐพ๊ฒ ๋๋ฉด ๋ธ๋ญ์ ์๋ ๋ฌธ์ฅ๋ค์ ๋ชจ๋ ์ํํ ํ์ try-catch๋ฌธ์ ๋น ์ ธ๋๊ฐ๊ณ ์์ธ๋ ์ฒ๋ฆฌ ๋์ง๋ง
๊ฒ์ฌ ๊ฒฐ๊ณผ๊ฐ true์ธ catch ๋ธ๋ญ์ด ํ๋๋ ์์ผ๋ฉด ์์ธ๋ ์ฒ๋ฆฌ๋์ง ์๋๋ค.
๋ชจ๋ ์์ธ ํด๋์ค๋ Exception ํด๋์ค์ ์์์ด๋ฏ๋ก,
catch๋ธ๋ญ์ ๊ดํธ์ Exception ํด๋์ค ํ์ ์ ์ฐธ์กฐ๋ณ์๋ฅผ ์ ์ธํด ๋์ผ๋ฉด ์ด๋ค ์ข ๋ฅ์ ์์ธ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์ด catch ๋ธ๋ญ์ ์ํด ์ฒ๋ฆฌ๋๋ค.
finally ๋ธ๋ก์ try - catch ๋ธ๋ก์ด ์ข ๋ฃ๋ ๋ ๋ฐ๋์ ์คํ๋๋ค. ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ์์ ๋์ถ์ ๋ง์ ์ ์๋ค.
try {
// ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ์ฝ๋
} catch (์์ธ์ข
๋ฅ ์ฐธ์กฐ๋ณ์) {
// ์์ธ ์ฒ๋ฆฌํ๋ ์ฝ๋
} finally {
// try ๋ธ๋ก์ด ๋๋๋ฉด ๋ฌด์กฐ๊ฑด ์คํ๋๋ ์ฝ๋
}
๋ฉํฐ catch ๋ธ๋ญ
JDK 1.7๋ถํฐ ์ฌ๋ฌ catch ๋ธ๋ญ์ '|' ๊ธฐํธ๋ฅผ ์ด์ฉํด์ ํ๋์ catch๋ธ๋ญ์ผ๋ก ํฉ์น ์ ์๊ฒ ๋์๋ค.
๋ฉํฐ catch ๋ธ๋ญ์ ์ด์ฉํ๋ฉด ์ค๋ณต๋ ์ฝ๋๋ฅผ ์ค์ผ ์ ์๋ค.
๋ฉํฐ catch ๋ธ๋ญ์ '|' ๊ธฐํธ๋ก ์ฐ๊ฒฐ๋ ์์ธ ํด๋์ค๊ฐ ์กฐ์๊ณผ ์์์ ๊ด๊ณ์ ์๋ค๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
(๋ถํ์ํ ์ฝ๋๋ ์ ๊ฑฐํ๋ผ๋ ์๋ฏธ)
์ฐธ์กฐ๋ณ์ e๋ก ๋ฉํฐ catch๋ธ๋ญ์ '|' ๊ธฐํธ๋ก ์ฐ๊ฒฐ๋ ์์ธ ํด๋์ค๋ค์ ๊ณตํต ๋ถ๋ชจ์ธ ์กฐ์ ์์ธ ํด๋์ค์ ์ ์ธ๋ ๋ฉค๋ฒ๋ง ์ฌ์ฉํ ์ ์๋ค.
throw
ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ณ ์๋ก ์์ธ๋ฅผ ๋ฐ์ ์ํฌ ์ ์๋ค.
1. ์ฐ์ฐ์ new๋ฅผ ์ด์ฉํด์ ๋ฐ์์ํค๋ ค๋ ์์ธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค.
Exception ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ์์ฑ์์ String์ ๋ฃ์ด ์ฃผ๋ฉด,
์ด String์ด Exception ์ธ์คํด์ค์ ๋ฉ์์ง๋ก ์ ์ฅ๋๋ค. getMessage()๋ฅผ ์ด์ฉํด์ ์ป์ ์ ์๋ค.
2. ํค์๋ throw๋ฅผ ์ด์ฉํด์ ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค.
Exception e = new Exception("์์ธ๋ฐ์");
throw e;
throws
๋ฉ์๋์ ์์ธ๋ฅผ ์ ์ธํ ๋, throws๋ฅผ ์ฌ์ฉํ๋ค.
์์ธ๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ์๋ ์ผํ๋ก ๊ตฌ๋ถํ๋ค.
void ๋ฉ์๋๋ช
() throws Exception1, Exception2, ... ExceptionN {
}
๋ชจ๋ ์์ธ์ ์ต๊ณ ์กฐ์์ธ Exception ํด๋์ค๋ฅผ ๋ฉ์๋์ ์ ์ธํ๋ฉด
์ด ๋ฉ์๋๋ ๋ชจ๋ ์ข ๋ฅ์ ์์ธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ๋ป์ด๋ค.
void method() throws Exception {
}
์์ธ๋ฅผ ์ ์ธํ๋ฉด ๊ทธ ์์ํ์ ์ ์์ธ๊น์ง๋ ๋ฐ์ํ ์๋ ์๋ค๋ ์ ์ ์ฃผ์ํ์.
๐ฉ๐ ์๋ฐ๊ฐ ์ ๊ณตํ๋ ์์ธ ๊ณ์ธต ๊ตฌ์กฐ
๋ชจ๋ ํด๋์ค์ ์กฐ์์ Object์ด๋ค.
Exception๊ณผ Error ํด๋์ค ์ญ์ Objectํด๋์ค์ ์์์ด๋ค.
[๊ทธ๋ฆผ ์ถํ ์ฒจ๋ถ]
๐ต๏ธโ๏ธ Exception๊ณผ Error์ ์ฐจ์ด๋?
ํ๋ก๊ทธ๋จ ์คํ์ค ์ด๋ค ์์ธ์ ์ํด ์ค์๋ํ๊ฑฐ๋ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด๋ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ๋ ์์ธ์ ํ๋ก๊ทธ๋จ ์๋ฌ ๋๋ ์ค๋ฅ๋ผ๊ณ ํ๋ค.
๋ฐ์ ์์ ์ ๋ฐ๋ผ ์ปดํ์ผ ์๋ฌ compile-time error, ๋ฐํ์ ์๋ฌ runtime error๋ก ๋๋ ์ ์๋๋ฐ,
๊ธ์ ๊ทธ๋๋ก ์ปดํ์ผ ์๋ฌ๋ ์ปดํ์ผ์ ๋ฐ์ํ๋ ์๋ฌ์ด๊ณ
ํ๋ก๊ทธ๋จ์ ์คํ ๋์ค์ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ๋ฐํ์ ์๋ฌ๋ผ๊ณ ํ๋ค.
์ด์ธ์๋ ๋ ผ๋ฆฌ์ ์๋ฌ๊ฐ ์๋๋ฐ ์ปดํ์ผ๋ ๋๊ณ ์คํ๋ ๋์ง๋ง ์๋ํ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ๋์ํ๋ ๊ฒ์ ๋งํ๋ค.
์ปดํ์ผ ์๋ฌ : ์ปดํ์ผ ์ ๋ฐ์ํ๋ ์๋ฌ
๋ฐํ์ ์๋ฌ : ์คํ ์ ๋ฐ์ํ๋ ์๋ฌ, ํ๋ก๊ทธ๋จ ์ข ๋ฃ
๋ ผ๋ฆฌ์ ์๋ฌ : ์คํ์ ๋์ง๋ง ์๋์ ๋ค๋ฅด๊ฒ ๋์, ํ๋ก๊ทธ๋จ ์ข ๋ฃ x
์๋ฐ์์๋ ์คํ ์ (runtime) ๋ฐ์ํ ์ ์๋ ํ๋ก๊ทธ๋จ ์ค๋ฅ๋ฅผ Exception๊ณผ Error ๋๊ฐ์ง๋ก ๊ตฌ๋ถํ๋ค.
๐ต Exception ์์ธ
ํ๋ก๊ทธ๋จ ์ฝ๋์ ์ํด์ ์์ต๋ ์ ์๋ ๋ค์ ๋ฏธ์ฝํ ์ค๋ฅ
๐คฏ Error ์๋ฌ
ํ๋ก๊ทธ๋จ ์ฝ๋์ ์ํด์ ์์ต๋ ์ ์๋ ์ฌ๊ฐํ ์ค๋ฅ
OutOfMemoryError, StackOverflowError ๋ฑ JVM์ด๋ ํ๋์จ์ด ๋ฑ ๊ธฐ๋ฐ ์์คํ ๋ฌธ์ ๋ก ๋ฐ์ํ๋ ๊ฒ
๐ฉ๐ง RuntimeException๊ณผ RE๊ฐ ์๋ ๊ฒ์ ์ฐจ์ด๋?
RuntimeException
๋ฐํ์ ์์ ์์ ๋ฐ์ํ๋ค.
์ฃผ๋ก ํ๋ก๊ทธ๋๋จธ์ ์ค์๋ก ๋ฐ์ํ๋ ์์ธ
์น๋ช ์ ์ธ ์์ธ์ํฉ์ ๋ฐ์์ํค์ง ์๋ ์์ธ๋ค๋ก ๊ตฌ์ฑ
IndexOutOfBoundsException, NullPointerException, ClassCastException, ArithmeticException ๋ฑ
Exception
์ปดํ์ผ ์์ ์์ ๋ฐ์ํ๋ค.
์ฌ์ฉ์์ ์ค์์ ๊ฐ์ ์ธ๋ถ์ ์ํฅ์ผ๋ก ๋ฐ์ํ๋ ์์ธ
ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์๋ค์ ๋์์ ์ํด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
FileNotFoundException, ClassNotFoundException, DataFormatException, IOException, SQLException ๋ฑ
๐ฉ๐ณ ์ปค์คํ ํ ์์ธ ๋ง๋๋ ๋ฐฉ๋ฒ
๊ธฐ์กด์ ์ ์๋ ์์ธ ํด๋์ค ์ธ์ ํ์์ ๋ฐ๋ผ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ก์ด ์์ธ ํด๋์ค๋ฅผ ์ ์ํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
๋ณดํต Exception ํด๋์ค ๋๋ RuntimeException ํด๋์ค๋ก๋ถํฐ ์์๋ฐ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ง๋ง,
ํ์์ ๋ฐ๋ผ์ ์๋ง์ ์์ธ ํด๋์ค๋ฅผ ์ ํํ ์ ์๋ค.
๋ฉค๋ฒ ๋ณ์๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
Exception ํด๋์ค๋ ์์ฑ ์์ String ๊ฐ์ ๋ฐ์์ ๋ฉ์์ง๋ก ์ ์ฅํ ์ ์๋ค.
class MyException extends Exception {
private final int ERR_CODE;
MyException(String msg, int errCode) { // ์์ฑ์
super(msg);
ERR_CODE = errCode;
}
MyException(String msg) { // ์์ฑ์
this(msg, 100);
}
public int getErrCode() {
return ERR_CODE;
}
}
'Programming > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Enum (1) | 2022.09.08 |
---|---|
[Java] ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.09.06 |
[Java] ์ธํฐํ์ด์ค (1) | 2022.08.29 |
[Java] ํจํค์ง (0) | 2022.08.17 |
[Java] ์์ (0) | 2022.08.12 |