• μλ νμΈμ~ μ΄μ μ μ΄μνλ λΈλ‘κ·Έ λ° GitHub, κ³΅λΆ λ΄μ©μ μ 리νλ Study-GitHub κ° μμ΅λλ€!
• π
π μλ°μμμ μμΈ μ²λ¦¬(Exception Handling)
μλ νμΈμ~ μ΄λ²μ μ 리ν λ΄μ©μ μμΈ λ° μμΈμ²λ¦¬μ λν λ΄μ©μ λλ€.
μμΈ μ²λ¦¬μ λν λΆλΆμ μ λ§ μ€μνλ€κ³ μκ°νλλ°μ, μ΄λ²μ κ°μΈμ μΌλ‘ κ°λ°μ μ§ννλ©΄μ μμΈ κ΄λ ¨λμ΄μ ν·κ°λ¦¬λ λΆλΆμ΄ λͺλͺ μμκΈ°μ κ°λ΅νκ² μ 리νκ³ μ ν©λλ€! π
μμΈ(Exception)λ ?
- νλ‘κ·Έλ¨ μ€ν μ€μ λ°μνλ 'μμΈμ μΈ μν©
- μ μμ μΈ λͺ λ Ή νλ¦μ λ°©ν΄νλ νλ‘κ·Έλ¨ μ€ν μ€μ λ°μνλ μ΄λ²€νΈ
- λ¨μν λ¬Έλ²μ μ€λ₯κ° μλ μ€ν μ€κ°μ λ°μνλ 'μ μμ μ΄μ§ μμ μν©'
- e.g) 0μΌλ‘ λλλ κ²½μ°λ λ°°μ΄μμ μΈλ±μ€λ₯Ό λ²μ΄λ κ²½μ° λ±λ±
μ΄νν°λΈ μλ° 3/E μμλ λ€μκ³Ό κ°μ΄ λ§νκ³ μμ΅λλ€.
"μμΈλ₯Ό μ λλ‘ νμ©νλ€λ©΄ νλ‘κ·Έλ¨μ κ°λ μ±, μ λ’°μ±, μ μ§λ³΄μμ±μ΄ λμμ§μ§λ§, μλͺ» μ¬μ©νλ©΄ λ°λμ ν¨κ³Όλ§ λνλλ€."
μμΈ μ²λ¦¬(Exception Handling) λ?
- μμΈ μ²λ¦¬λ ClassNotFound, IO, SQL λ±κ³Ό κ°μ λ°νμ μ€λ₯λ₯Ό μ²λ¦¬νλ λ©μ»€λμ¦
- νλ‘κ·Έλ¨ μ€νμ μν₯μ λ―ΈμΉμ§ μλλ‘ μμΈκ° λ°μν λ μ μ ν λ°©λ²μ μ 곡
- μμΈ μ²λ¦¬λ₯Ό ν΅ν΄ νλ‘κ·Έλ¨μ μ’ λ£νμ§ μκ³ μ μμ μΈ μ€νμν μ μ§
μλ°μμμ Exception classes κ³μΈ΅ ꡬ쑰
λͺ¨λ μμΈ λ° μ€λ₯ μ νμ Throwable ν΄λμ€μ νμ ν΄λμ€ μ λλ€.
μ΄νν°λΈ μλ° 3/E μμλ λ€μκ³Ό κ°μ΄ λ§νκ³ μμ΅λλ€.
μλ° μΈμ΄ λͺ μΈκ° μꡬνλ κ²μ μλμ§λ§, μ κ³μ λ리 ν΄μ§ κ·μ½μΌλ‘ Error ν΄λμ€λ₯Ό μμν΄ νμ ν΄λμ€λ₯Ό λ§λλ μΌμ μμ νμ.
μ¦, μ¬μ©μκ° μ§μ ꡬννλ λΉκ²μ¬ throwableμ λͺ¨λ RuntimeExceptionμ νμ ν΄λμ€μ¬μΌ νλ€.
Exception, RuntimeException, Errorλ₯Ό μμνμ§ μλ throwableμ λ§λ€ μλ μμ§λ§, μ΄λ¬ν throwableμ μ μμ μΈ μ¬νλ³΄λ€ λμ κ² νλλ μμΌλ©΄μ API μ¬μ©μλ₯Ό ν·κ°λ¦¬κ² ν λΏμ΄λ―λ‘ μ λλ‘ μ¬μ©νμ§ λ§μ.
μ κ·Έλ¦Όμ ν΅ν΄ μλ°μμμ λ¬Έμ μν©μ μ€λ₯, κ²μ¬ μμΈ, λ°νμ μμΈμ μΈ κ°μ§λ‘ μ νμ λλ μ μμ΅λλ€.
μ€λ₯(Error)
- μμ€ν μ λΉμ μμ μΈ μν©μ΄ μκ²Όμ λ λ°μ
- μμ€ν λ 벨μμ λ°μνκΈ° λλ¬Έμ μ¬κ°ν μμ€μ λ¬Έμ μν©
κ²μ¬ μμΈ(Check Exception)
- μ»΄νμΌ λ¨κ³μμ λͺ ννκ² Exception 체ν¬(κ²μ¬)κ° κ°λ₯ν κ²
- λ°λμ μμΈ μ²λ¦¬λ₯Ό ν΄μ£Όμ΄μΌ ν¨
- μ»΄νμΌ λ¨κ³μμ νμΈμ΄ κ°λ₯
- ex) ClassNotFoundException, IOException
λ°νμ μμΈ(Runtime Exception)
- μ»΄νμΌ λ¨κ³κ° μλ μ€νκ³Όμ μ€ λ°κ²¬λ¨
- λͺ μμ μΈ μ²λ¦¬λ₯Ό κ°μ νμ§ μμ
- ex) NullPointerException, IndexOutOfBoundException
μλ° κ°λ°μκ° κ°μ₯ λ§μ΄ μ νλ μμΈ μ€ νλκ° NullPointerException μΈλ°μ, κ°λ¨ν μ½λλ₯Ό ν΅ν΄ μΈμ λ°μνλμ§ μ΄ν΄λ³΄κ² μ΅λλ€.
public class NPEException {
public static void main(String[] args) {
final String data = null;
System.out.println(data.toString());
}
}
ν μ€νΈλ₯Ό μν΄ κ°λ¨νκ² μμ±ν μ½λμ΄κΈ° λλ¬Έμ, μ€λ¬΄μμλ μμ κ°μ΄ μλ¬λ₯Ό λ°λ‘ νμΈν μ μλ μν©μ μ£Όμ΄μ§μ§ μμ΅λλ€.
μ μ½λλ₯Ό μ€νν΄λ³΄λ©΄ μμ κ°μ΄ NUllPointerException μμΈκ° λ°μνλλ°μ, null κ°μ μ κ·Όνλ € νκΈ° λλ¬Έμ λ°μν μ€λ₯μ λλ€.
μλ°μμλ μμΈ μ²λ¦¬ μ½λλ₯Ό try-catch-finally λΈλ‘μ ν΅ν΄ μμ±μ νλλ°μ, μμ μ½λλ μλ λΈλ‘κ·Έλ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ!
μλ°μμ μμΈ μ²λ¦¬μ λν 9κ°μ§ Best Practices
1. finally λΈλ½μμ μμμ ν΄μ νκ±°λ, try-with-resource ꡬ문 μ¬μ©
2. νΉμ μμΈλ₯Ό μ νΈ
3. μ§μ ν μμΈλ₯Ό λ¬Έμν
4. μμΈ λ°μμ μ€λͺ λ©μμ§λ₯Ό μΆκ°
5. κ°μ₯ ꡬ체μ μΈ μμΈλ₯Ό λ¨Όμ μ‘μλΌ
6. Throwable μ μ‘μ§ μλλ€.
7. μμΈλ₯Ό 무μνμ§ μλλ€.
8. Logλ₯Ό λ¨κΈ°κ³ μμΈλ₯Ό λ°μνμ§ μλλ€.
9. μλΉνμ§ μκ³ μμΈλ₯Ό κ°μΈλΌ
β» Javaμ μμΈ λ¦¬μ€νΈλ λ€μκ³Ό κ°μ΅λλ€.
java.io
- IOException
- CharConversionException
- EOFException
- FileNotFoundException
- InterruptedIOException
- ObjectStreamException
- InvalidClassException
- InvalidObjectException
- NotActiveException
- NotSerializableException
- OptionalDataException
- StreamCorruptedException
- WriteAbortedException
- SyncFailedException
- UnsupportedEncodingException
- UTFDataFormatException
- UncheckedIOException
java.lang
- ReflectiveOperationException
- ClassNotFoundException
- InstantiationException
- IllegalAccessException
- InvocationTargetException
- NoSuchFieldException
- NoSuchMethodException
- CloneNotSupportedException
- InterruptedException
μ°μ μμΈ
- IndexOutOfBoundsException
- ArrayIndexOutOfBoundsException
- StringIndexOutOfBoundsException
- ArrayStoreException
- ClassCastException
- EnumConstantNotPresentException
- IllegalArgumentException
- IllegalThreadStateException
- NumberFormatException
- IllegalMonitorStateException
- IllegalStateException
- NegativeArraySizeException
- NullPointerException
- SecurityException
- TypeNotPresentException
- UnsupportedOperationException
java.net
- HttpRetryException
- SocketTimeoutException
- MalformedURLException
- ProtocolException
- SocketException
- BindException
- ConnectException
- NoRouteToHostException
- PortUnreachableException
- UnknownHostException
- UnknownServiceException
- URISyntaxException
java.text
- ParseException
java.time
- DateTimeException
π References
github.com/Meet-Coder-Study/book-effective-java
https://simplesnippets.tech/exception-handling-in-java-part-1/
stackify.com/best-practices-exceptions-java/
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] - κΉμ 볡μ¬(Deep Copy) vs μμ 볡μ¬(Shallow Copy) (1) | 2021.07.30 |
---|---|
[Java] - Project Lombok(둬볡) (0) | 2021.06.20 |
[Java] - Jsoupμ μ΄μ©ν ν¬λ‘€λ§(feat. μΈνλ°) (5) | 2021.05.11 |
[Java] - μλ° μ κ· ννμ(Regular Expression) + 2021 μΉ΄μΉ΄μ€ μ½ν (μ κ· μμ΄λ μΆμ²) (0) | 2021.03.28 |
[Java] - @FunctionalInterface ν¨μν μΈν°νμ΄μ€ (0) | 2021.02.11 |
λκΈ