Skip to content

Commit

Permalink
Merge pull request #343 from hwanghe159/item72
Browse files Browse the repository at this point in the history
[#72][2κΈ°] ν‘œμ€€ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜λΌ
  • Loading branch information
ksy90101 authored Oct 25, 2021
2 parents f1bad6d + 6a84e0c commit 87682dc
Showing 1 changed file with 44 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
## μ•„μ΄ν…œ72. ν‘œμ€€ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜λΌ

μ›¬λ§Œν•˜λ©΄ μ½”λ“œλŠ” μž¬μ‚¬μš©ν•˜λŠ” 게 μ’‹λ‹€. μ˜ˆμ™Έλ„ λ§ˆμ°¬κ°€μ§€λ‘œ 직접 λ§Œλ“œλŠ” 것보단 ν‘œμ€€ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜λŠ” 게 μ’‹λ‹€

### ν‘œμ€€ μ˜ˆμ™Έλ₯Ό μž¬μ‚¬μš©ν•˜λ©΄ μ–»λŠ” μž₯점

1. λ‹€λ₯Έ μ‚¬λžŒμ΄ 읡히고 μ‚¬μš©ν•˜κΈ° μ‰¬μ›Œμ§„λ‹€, 가독성이 쒋아진닀
2. μ˜ˆμ™Έ ν΄λž˜μŠ€κ°€ μ μ„μˆ˜λ‘ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰λ„ 쀄고 클래슀λ₯Ό μ μž¬ν•˜λŠ” μ‹œκ°„λ„ 적게 κ±Έλ¦°λ‹€
- μ˜ˆμ™ΈλŠ” 직렬화할 수 μžˆλ‹€ -> 직렬화엔 λ§Žμ€ 뢀담이 λ”°λ₯Έλ‹€

### 많이 μ“°μ΄λŠ” ν‘œμ€€ μ˜ˆμ™Έ

- `IllegalArgumentException`
- ν˜ΈμΆœμžκ°€ 인수둜 λΆ€μ μ ˆν•œ 값을 λ„˜κΈΈ λ•Œ
- 예: 반볡 횟수λ₯Ό μ§€μ •ν•˜λŠ” λ§€κ°œλ³€μˆ˜μ— 음수λ₯Ό 건넬 λ•Œ
- `IllegalStateException`
- λŒ€μƒ 객체의 μƒνƒœκ°€ 호좜된 λ©”μ„œλ“œλ₯Ό μˆ˜ν–‰ν•˜κΈ°μ— μ ν•©ν•˜μ§€ μ•Šμ„ λ•Œ
- 예: μ œλŒ€λ‘œ μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ 객체λ₯Ό μ‚¬μš©ν•˜λ € ν•  λ•Œ
- `NullPointerException`
- null값을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” λ©”μ„œλ“œμ— null을 건넬 λ•Œ
- `IndexOutOfBoundsException`
- μ–΄λŠ μ‹œν€€μŠ€μ˜ ν—ˆμš© λ²”μœ„λ₯Ό λ„˜λŠ” 값을 건넬 λ•Œ
- μΈλ±μŠ€κ°€ λ²”μœ„λ₯Ό λ„˜μ–΄μ„°μ„ λ•Œ
- `ConcurrentModificationException`
- 단일 μŠ€λ ˆλ“œμ—μ„œ μ‚¬μš©ν•˜λ €κ³  μ„€κ³„ν•œ 객체λ₯Ό μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ λ™μ‹œμ— μˆ˜μ •ν•˜λ €κ³  ν•  λ•Œ
- λ™μ‹œ μˆ˜μ •μ„ ν™•μ‹€νžˆ κ²€μΆœν•  수 μžˆλŠ” μ•ˆμ •λœ 방법이 μ—†μœΌλ‹ˆ, 이 μ˜ˆμ™ΈλŠ” λ¬Έμ œκ°€ 생길 κ°€λŠ₯성을 μ•Œλ €μ£ΌλŠ” μ •λ„μ˜ μ—­ν• λ‘œ μ“°μž„
- `UnsupportedOperationException`
- ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•œ λ™μž‘μ„ λŒ€μƒ 객체가 μ§€μ›ν•˜μ§€ μ•Šμ„ λ•Œ
- 보톡은 κ΅¬ν˜„ν•˜λ €λŠ” μΈν„°νŽ˜μ΄μŠ€μ˜ λ©”μ„œλ“œ 일뢀λ₯Ό κ΅¬ν˜„ν•  수 μ—†μ„λ•Œ μ‚¬μš©
- 예 : μ›μ†Œλ₯Ό λ„£μ„μˆ˜λ§Œ μžˆλŠ” `List`의 κ΅¬ν˜„μ²΄μ— `remove`λ©”μ„œλ“œλŠ” 이 μ˜ˆμ™Έλ₯Ό 던짐
- `ArithmeticException`, `NumberFormatException`, ..
- λ³΅μ†Œμˆ˜λ‚˜ 유리수λ₯Ό λ‹€λ£¨λŠ” κ°μ²΄μ—μ„œ μ‚¬μš©

### `Exception`, `RuntimeException`, `Throwable`, `Error`은 직접 μž¬μ‚¬μš©ν•˜μ§€ 말라

- 이 ν΄λž˜μŠ€λ“€μ€ 좔상 클래슀라고 μƒκ°ν•˜λŠ” 게 λ‚«λ‹€
- μƒμœ„ ν΄λž˜μŠ€μ΄λ―€λ‘œ(μ—¬λŸ¬ μ„±κ²©μ˜ μ˜ˆμ™Έλ“€μ„ ν¬κ΄„ν•˜λŠ” ν΄λž˜μŠ€μ΄λ―€λ‘œ) μ•ˆμ •μ μœΌλ‘œ ν…ŒμŠ€νŠΈν•  수 μ—†λ‹€

### ν‘œμ€€ μ˜ˆμ™Έμ€‘μ— μ–΄λ–€ κ±Έ μ‚¬μš©ν•΄μ•Ό 할지 ν—·κ°ˆλ¦°λ‹€λ©΄?

- ν‘œμ€€ μ˜ˆμ™Έλ“€μ˜ μ£Όμš” μ“°μž„μ΄ μƒν˜Έ 배타적이지 μ•ŠκΈ° λ•Œλ¬Έμ— μ„ νƒν•˜κΈ° μ–΄λ €μšΈ 수 μžˆλ‹€
- 예: μΉ΄λ“œ 덱을 ν‘œν˜„ν•˜λŠ” 객체가 있고, μΉ΄λ“œλ₯Ό 뽑아 λ‚˜λˆ μ£ΌλŠ” λ©”μ„œλ“œ(인수둜 건넨 수만큼)κ°€ μžˆμ„λ•Œ
- μΈμˆ˜κ°€ λ„ˆλ¬΄ μ»€μ„œ μ–΄μ°¨ν”Ό μ‹€νŒ¨ν• κ±°λΌλ©΄? -> `IllegalArgumentException`
- 덱의 μΉ΄λ“œκ°€ λ„ˆλ¬΄ 적으면? -> `IllegalStateException`

0 comments on commit 87682dc

Please sign in to comment.