μ€λ₯λ κ°λ₯ν ν 빨리 λ°μν κ³³μμ μ‘μμΌ νλ€.
μ€λ₯λ₯Ό λ°μν μ¦μ μ‘μ§ λͺ»νλ©΄ ν΄λΉ μ€λ₯λ₯Ό κ°μ§νκΈ°λ μ΄λ ΅κ³ , μ νν μ΄λμ λ°μνλμ§ μκΈ°λ μ΄λ ΅λ€.
- μΈλ±μ€ κ°μ μμμ΄λ©΄ μ λλ€.
- κ°μ²΄ μ°Έμ‘°λ null μ΄ μλμ΄μΌ νλ€.
μλμ κ°μ΄ μ€ν¨ μμμ±(μμ΄ν 74)μ μ΄κΈ°λ λ¬Έμ κ° λ°μνλ€.
- λ©μλκ° μνλλ€κ° λͺ¨νΈν μμΈλ₯Ό λμ§λ©° μ€ν¨νλ€.
- λ©μλκ° μ μνλμ§λ§ μλͺ»λ κ²°κ³Όλ₯Ό λ°ννλ€.
- λ©μλμμ μ¬μ©ν λ€λ₯Έ κ°μ²΄λ₯Ό μ΄μν μνλ‘ λ§λ€μ΄ λ―Έλμ μ μ μλ μμ μ λ¬Έμ κ° λ°μνλ€.
μλ λ¨κ³μ νμμΌμλ‘ λ¬Έμ λ λμ± μ¬κ°ν΄μ§λ€.
μμΈμ λ¬Έμν
μλ°λ
μ @throws
νκ·Έλ₯Ό μ΄μ©ν΄μ κ°λ₯νλ€.
IllegalArgumentException, IndexOutOFBoundsException, NullPointerException μ€ νλκ° λ κ²μ΄λ€.
{% hint style="danger" %} λ©μλμ μμ±μλ μ λ ₯ 맀κ°λ³μμ κ°μ΄ νΉμ 쑰건μ λ§μ‘±ν΄μΌ νλ κ²½μ°κ° λ§μλ°, μ΄λ¬ν κ²½μ° μ€λ₯λ κ°λ₯ν ν 빨리 κ²μ¬ν΄μΌ νλ κ²μ΄ μ’μΌλ―λ‘ λ©μλ λͺΈμ²΄κ° μμλκΈ° μ μ 맀κ°λ³μλ₯Ό κ²μ¬νλ κ²μ΄ μ’λ€. {% endhint %}
publicκ³Ό protected λ©μλλ 맀κ°λ³μ κ°μ΄ μλͺ»λμ λ λμ§λ μμΈλ₯Ό @throws
μλ°λ
νκ·Έλ₯Ό νμ©ν΄ λ¬Έμνν΄μΌ νλ€.
λ°μνλ μμΈλ λ³΄ν΅ IllegalArgumentException
, IndexOutOfBoundsException
, NullPointerException
μ€ νλκ° λ κ²μ΄λ€(μμ΄ν
72)
/**
(νμ¬ κ° mod m)μ λ°ννλ€.
...
@param m κ³μ(μμμ¬μΌ νλ€.)
@return νμ¬ κ° Mod m
@thorws ArithmeticException mμ΄ 0λ³΄λ€ μκ±°λ κ°μΌλ©΄ λ°μνλ€.
*/
public BigInteger mod(BigInteger m){
if (m.signum() <= 0){
throw new ArithmeticException("κ³μ(m)λ μμμ¬μΌ ν©λλ€. " + m);
...
}
- μ΄ λ©μλμ @throws νκ·Έλ 0λ³΄λ€ μκ±°λ κ°μ κ°μ λλ¨Έμ§λ₯Ό ꡬνλ € νλ©΄, ArithmeticExceptionμ΄ λ°μνλ€κ³ μΉμ νκ² μλ €μ£Όκ³ μλ€.
All methods and constructors in this class throw {@code NullPointerException}
when passed a null object reference for any input parameter
ν΄λμ€ μ 체 μ€λͺ
μλ μμ κ°μ΄ λͺ¨λ λ©μλμ μμ±μκ° NullPointerException
μ λμ§ μ μλ€λ μ μ λ΄ν¬νκ³ μλ€λ μ λ λ³Όλ§νλ€. κ·Έλμ λ€λ₯Έ λ©μλλ€μ λ°λ‘ @throws NullPointerExceptionμ μ μ΄μ£Όμ§ μκ³ μλ€.
@Nullable
μ΄λ λΉμ·ν μ΄λ
Έν
μ΄μ
μ μ¬μ©νμ¬ νΉμ 맀κ°λ³μλ nullμ΄ λ μ μλ€κ³ μλ €μ€ μ μμ§λ§, νμ€μ μΈ λ°©λ²μ μλλ€.
λμ μλ° 7μμ μΆκ°λ java.util.Objects. requireNonNull
λ©μλλ₯Ό μ¬μ©νλ€λ©΄ λ μ΄μ null κ²μ¬λ₯Ό μλμΌλ‘ νμ§ μμλ λλ€.
μνλ μμΈ λ©μμ§λ μ§μ ν μ μλ€. λν μ λ ₯μ κ·Έλλ‘ λ°ννλ―λ‘ κ°μ μ¬μ©νλ λμ μ null κ²μ¬λ₯Ό μνν μ μλ€
this.strategy = Objects.requireNonNull(strategy, "μ λ΅"); // μμΈ λ©μμ§ μ§μ
- λ°νκ°μ κ·Έλ₯ 무μνκ³ νμν κ³³ μ΄λμλ μμν null κ²μ¬ λͺ©μ μΌλ‘ μ¬μ© ν΄λ λλ€.
μλ° 9λΆν°λ checkFromIndexSize()
, checkFromToIndex()
, checkIndex()
μ κ°μ λ©μλλ€μ΄ μΆκ°λλ©΄μ Objectsμ λ²μ κ²μ¬ κΈ°λ₯λ λν΄μ‘λ€.
λ¨ μμΈ λ©μμ§λ₯Ό μ§μ ν μ μμΌλ©° 리μ€νΈμ λ°°μ΄ μ μ©μΌλ‘ μ€κ³λμλ€. λν λ«ν λ²μ(μ λλ¨μ κ°μ ν¬ν¨νλ)λ λ€λ£¨μ§ λͺ»νλ€λ λ¨μ μ΄ μ‘΄μ¬νλ€.
κ·Έλλ μ΄λ° μ μ½μ΄ κ±Έλ¦Όλμ΄ λμ§ μλ μν©μμλ μμ£Ό μ μ©νκ³ νΈνλ€.
Java 7μμ μΆκ°λ null
κ²μ¬ κΈ°λ₯: Objects.requireNonNull()
Objects.requireNonNull()
μ Java 7μμ μΆκ°λ λ©μλλ‘, μ λ¬λ°μ 맀κ°λ³μκ° null
μΈμ§ κ²μ¬νκ³ *null
μ΄λΌλ©΄ NullPointerException
μ λμ§λ€.
μ£Όλ‘ λ©μλ μΈμμ μ ν¨μ± κ²μ¬μ μ¬μ©λλ©°,
null
λ‘ μΈν΄ λ°μν μ μλ μ€λ₯λ₯Ό 미리 λ°©μ§νλ€.
μλλ Objects.requireNonNull()
μ μ¬μ© μμ
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.Objects;
public class Item49Test {
@Test
public void requireNonNullTest() {
// null κ°μ μ λ¬νμ¬ NullPointerExceptionμ΄ λ°μνλμ§ νμΈ
Assertions.assertThrows(NullPointerException.class, () -> {
nullTest(null);
});
}
public void nullTest(Object obj) {
// μ λ¬λ°μ κ°μ²΄κ° nullμΈμ§ νμΈνκ³ , nullμΌ κ²½μ° μμΈ λμ§κΈ°
Objects.requireNonNull(obj, "λμ΄ λ€μ΄μμ");
}
}
Objects.requireNonNull()
μ λ λ²μ§Έ μΈμλ‘ μ λ¬λ λ¬Έμμ΄μ μμΈ λ©μμ§λ‘ μ¬μ©λλ€. μ¬κΈ°μλ"λμ΄ λ€μ΄μμ"
λ©μμ§κ° ν¬ν¨λμ΄ μμΈ λ°μ μ λ¬Έμ λ₯Ό λ λͺ ννκ² μ μ μλ€.- μ΄ λ©μλλ λ©μλ νΈμΆ μ
null
λ‘ μΈν΄ λ°μν μ μλ λ¬Έμ λ₯Ό μ¬μ μ λ°©μ§ν μ μλλ‘ λμμ€λ€.
곡κ°λμ§ μμ λ©μλλΌλ©΄, ν¨ν€μ§ μ μμκ° μ§μ λ©μλκ° νΈμΆλλ μν©μ ν΅μ κ°λ₯νκΈ° λλ¬Έμ μ€μ§ μ ν¨ν κ°λ§μ΄ λ©μλμ λ겨μ§λ¦¬λΌλ κ²μ 보μ¦ν΄μΌ νλ€.
μ¦, public μ΄ μλ λ©μλλΌλ©΄ λ¨μΈλ¬Έ(assert)λ₯Ό μ¬μ©ν΄ 맀κ°λ³μ μ ν¨μ±μ κ²μ¬νμ. ν΅μ¬μ λ¨μΈλ¬Έλ€μ΄ μμ μ΄ λ¨μΈν μ‘°κ±΄μ΄ λ¬΄μ‘°κ±΄ μ°Έμ΄λΌκ³ μ μΈνλ€λ κ²μ΄λ€.
Javaμ assert
ꡬ문μ μ¬μ©νμ¬λ null
κ²μ¬λ₯Ό μνν μ μλ€. assert
λ νΉμ μ‘°κ±΄μ΄ μ°ΈμΈμ§ νμΈνλ©°, μ‘°κ±΄μ΄ κ±°μ§μΈ κ²½μ° AssertionError
λ₯Ό λμ§λ€. μ΄λ μ£Όλ‘ λλ²κΉ
λͺ©μ μΌλ‘ μ¬μ©λλ©°, λ°νμ μμ νμ±νν μ μλ€.
private static void sort(long a[], int offset, int length){
assert a != null;
assert offset >= 0 && offset <= a.length;
assert length >= 0 && length <= a.length - offset;
...// κ³μ° μν
}
π λ¨μΈλ¬Έ(assert) νΉμ§
1) μ€ν¨μ AssertionErrorλ₯Ό λμ§λ€.
2) λ°νμμ μλ¬΄λ° ν¨κ³Όλ, μλ¬΄λ° μ±λ₯ μ νλ μλ€.
λ©μλκ° μ§μ μ¬μ©νμ§ μμΌλ λμ€μ μ°λ €κ³ μ μ₯νλ 맀κ°λ³μμ μ ν¨μ±μ λμ± μ κ²½ μ¨μ κ²μ¬ν΄μΌ νλ€. μμ±μ 맀κ°λ³μμ μ ν¨μ± κ²μ¬λ, ν΄λμ€ λΆλ³μμ μ΄κΈ°λ κ°μ²΄κ° λ§λ€μ΄μ§μ§ μκ² νλλ° κΌ νμνλ€.
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class Item49Test {
@Test
public void requireNonNullTest2() {
// null κ°μ μ λ¬νμ¬ AssertionErrorκ° λ°μνλμ§ νμΈ
Assertions.assertThrows(AssertionError.class, () -> {
nullTest2(null);
});
}
public void nullTest2(Object obj) {
// κ°μ²΄κ° nullμΈμ§ κ²μ¬, nullμ΄λ©΄ AssertionError λ°μ
assert obj != null;
}
}
assert obj != null;
:obj
κ°null
μ΄ μλμ§ νμΈνλ 쑰건μ λλ€. μ‘°κ±΄μ΄ λ§μ‘±λμ§ μμΌλ©΄AssertionError
κ° λ°μAssertions.assertThrows()
λ₯Ό ν΅ν΄ AssertionErrorκ° λ°μνλμ§ ν μ€νΈνλ€.
assert
λ μ£Όλ‘ κ°λ° μ€μ μ¬μ©λλ©°, νλ‘λμ
νκ²½μμλ νμ±νλμ§ μμ μ μλ€. μ΄ λλ¬Έμ μ€μν μ ν¨μ± κ²μ¬μλ Objects.requireNonNull()
κ³Ό κ°μ λͺ
μμ μΈ κ²μ¬λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
4. μ€λ₯ κ²μ¬μ μΌλ° μμΉ 2: λμ€μ μ°λ €κ³ μ μ₯νλ 맀κ°λ³μμ μ ν¨μ± κ²μ¬
μ΄λ€ λ©μλμμ λ°νλ κ°μ λμ€μ μ¬μ©νκΈ° μν΄ λ³΄κ΄ν λ, ν΄λΉ κ°μ΄ null
μΈμ§ νμΈνμ§ μμΌλ©΄ μμμΉ λͺ»ν μ€λ₯κ° λ°μν μ μλ€.
λμ€μ μ΄ κ°μ΄
null
μμ λ°κ²¬νκ² λλ©΄ μ€λ₯μ μμΈμ μΆμ νλ κ²μ΄ λ§€μ° μ΄λ €μΈ μ μμΌλ―λ‘, μ μ₯νκΈ° μ μ μ ν¨μ±μ κ²μ¬νλ κ²μ΄ μ€μνλ€.
λ§μ½ μ΄λ€ λ©μλμμ λ°νλ κ°μ²΄λ₯Ό λμ€μ μ¬μ©νκΈ° μν΄ μ μ₯ν΄ λκ³ , null
μΈμ§ νμΈνμ§ μμ κ²½μ° μμμΉ λͺ»ν μ€λ₯κ° λ°μν μ μλ€. μ΄λ₯Ό λ°©μ§νκΈ° μν΄ μ μ₯νκΈ° μ μ μ ν¨μ±μ κ²μ¬νλ κ²μ΄ λ§€μ° μ€μνλ€.
μλλ μ ν¨μ± κ²μ¬λ₯Ό ν΅ν΄ null
λ°©μ§νλ μ½λ μμ
import java.util.Objects;
public class UserManager {
// μ¬μ©μ μ 보λ₯Ό μ μ₯νλ λ©μλ
public void storeUser(User user) {
// μ μ₯νκΈ° μ μ μ ν¨μ± κ²μ¬ μν
Objects.requireNonNull(user, "User κ°μ²΄κ° nullμ
λλ€. μ μ₯ν μ μμ΅λλ€.");
// μ ν¨μ± κ²μ¬ ν μμ νκ² κ°μ²΄ μ μ₯
// ...
}
// User ν΄λμ€λ λ¨μν λ°μ΄ν° κ°μ²΄λ‘ κ°μ
static class User {
String name;
public User(String name) {
this.name = name;
}
}
}
Objects.requireNonNull(user, "User κ°μ²΄κ° nullμ λλ€. μ μ₯ν μ μμ΅λλ€.")
: μ¬μ©μ κ°μ²΄κ°null
μΈμ§ κ²μ¬νλ€. μ΄λ‘ μΈν΄ μ μ₯νκΈ° μ μnull
κ°μ λ°©μ§νμ¬ μκΈ°μΉ μμ μ€λ₯λ₯Ό μλ°©ν μ μλ€.- μ΄λ₯Ό ν΅ν΄ λμ€μ null ν¬μΈν° λ¬Έμ λ‘ λ°μν μ μλ μ€λ₯λ₯Ό 미리 λ°©μ§
- μ ν¨μ± κ²μ¬ λΉμ©μ΄ μ§λμΉκ² λκ±°λ μ€μ©μ μ΄μ§ μμ λ:
- μ ν¨μ± κ²μ¬μ ν° λΉμ©μ΄ λ λ€λ©΄, μ€μ©μ μ΄μ§ μμ μ μλ€.
- κ³μ° κ³Όμ μμ μ묡μ μΌλ‘ κ²μ¬κ° μνλ λ:
- μλ₯Ό λ€μ΄,
Collections.sort(List)
μ κ²½μ° μ λ ¬ κ³Όμ μμ νμ μ μ ν¨μ±μ΄ κ²μ¬λλ€. λ§μ½ μνΈ λΉκ΅λ μ μλ νμ μ΄ λ€μ΄ μλ€λ©΄ClassCastException
μ λμ§λ€. - μ묡μ μ ν¨μ± κ²μ¬μ μμ‘΄νλ κ²μ μ€ν¨ μμμ±(safety failure)μ ν΄μΉ μ μμΌλ―λ‘ μ£Όμκ° νμ
- μ€ν¨ μμμ±μ΄λ, μ ν¨μ± κ²μ¬ μ€ν¨ μ΄νμλ κ°μ²΄μ μνκ° λ³νμ§ μλλ‘ λ³΄μ₯νλ κ²μ΄λ€. μ¦, λ©μλκ° μ¬λ¬ λ² μ€ν¨νλλΌλ νμ κ°μ κ²°κ³Όλ₯Ό λ°νν΄μΌ νλ€. μλ₯Ό λ€μ΄, λ°μ΄ν°λ₯Ό μΆκ°νλ λμ€ μ€λ₯κ° λ°μνλλΌλ λ°μ΄ν°κ° μ λ°λ§ μΆκ°λλ μν©μ λ°©μ§νλ κ²μ΄ μ€ν¨ μμμ±μ΄λ€.
- μλ₯Ό λ€μ΄,
import java.util.ArrayList;
import java.util.List;
public class ProductManager {
private final List<String> products = new ArrayList<>();
// μ ν μΆκ° λ©μλ
public void addProduct(String product) {
if (product == null) {
throw new IllegalArgumentException("μ ν μ΄λ¦μ nullμ΄ λ μ μμ΅λλ€.");
}
try {
products.add(product);
} catch (Exception e) {
// μ€λ₯ λ°μ μ 리μ€νΈλ₯Ό λ³κ²½νκΈ° μ μνλ‘ λλ리기
products.remove(product);
throw e; // μμΈλ₯Ό λ€μ λμ§
}
}
public List<String> getProducts() {
return new ArrayList<>(products); // λ°©μ΄μ 볡μ¬
}
}
addProduct(String product)
λ©μλλ μ νμ 리μ€νΈμ μΆκ°νλ λ©μλ- μ ν μ΄λ¦μ΄
null
μ΄λ©΄ μμΈλ₯Ό λμ§λλ€. μ ν¨μ± κ²μ¬λ₯Ό ν΅ν΄null
κ°μΌλ‘ μΈν λ¬Έμ λ₯Ό λ°©μ§νλ€.
μΆκ° λμ€ μ€λ₯κ° λ°μνλ©΄, 리μ€νΈμμ ν΄λΉ μ νμ μ κ±°νμ¬ λ¦¬μ€νΈ μνκ° λ³κ²½λμ§ μλλ‘ νλ€. μ΄λ κ² ν¨μΌλ‘μ¨ μ€ν¨ μμμ±μ μ μ§νλ€.
κ³μ° μ€ λμ Έμ§λ μμΈμ API μμΈμ μ°¨μ΄
- κ³μ° μ€μ λμ Έμ§λ μμΈμ APIμμ λμ§κΈ°λ‘ ν μμΈκ° λ€λ₯Ό μ μλ€.
- μ΄ κ²½μ° μ μμ€ μμΈλ₯Ό μ‘μ κ³ μμ€μ μ¬μ©μ μ μ μμΈλ‘ λ³ννλ μμΈ λ²μ(exception translation)μ΄ νμνλ€.
- μλ₯Ό λ€μ΄, λ΄λΆμ μΌλ‘ λ°μνλ
ClassCastException
μ λ μλ―Έ μλInvalidDataException
κ³Ό κ°μ μ¬μ©μ μ μ μμΈλ‘ λ³ννμ¬ μ 곡ν μ μλ€.
- μλ₯Ό λ€μ΄, λ΄λΆμ μΌλ‘ λ°μνλ
κ³μ° μ€μ λμ Έμ§λ μ μμ€ μμΈμ APIμμ λμ§κΈ°λ‘ ν κ³ μμ€ μμΈκ° λ€λ₯Ό μ μλ€. μ΄λλ μ μμ€ μμΈλ₯Ό μ‘μ μλ―Έ μλ κ³ μμ€ μ¬μ©μ μ μ μμΈλ‘ λ³νν΄μ£Όλ μμΈ λ²μ(exception translation)μ΄ νμ
import java.util.List;
public class DataService {
// λ°μ΄ν°λ₯Ό κ²μνλ λ©μλ
public String findData(List<String> data, int index) {
try {
// μΈλ±μ€λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό κ²μ
return data.get(index);
} catch (IndexOutOfBoundsException e) {
// μ μμ€ μμΈμΈ IndexOutOfBoundsExceptionμ μ¬μ©μ μ μ μμΈλ‘ λ³ν
throw new DataNotFoundException("λ°μ΄ν° μΈλ±μ€κ° μλͺ»λμμ΅λλ€: " + index, e);
}
}
// μ¬μ©μ μ μ μμΈ
public static class DataNotFoundException extends RuntimeException {
public DataNotFoundException(String message, Throwable cause) {
super(message, cause);
}
}
public static void main(String[] args) {
DataService service = new DataService();
List<String> data = List.of("apple", "banana", "cherry");
try {
// μλͺ»λ μΈλ±μ€λ₯Ό μ λ¬νμ¬ μμΈ λ°μ
service.findData(data, 5);
} catch (DataNotFoundException e) {
System.err.println("μ€λ₯ λ°μ: " + e.getMessage());
}
}
}
findData(List<String> data, int index)
λ©μλλ μ£Όμ΄μ§ μΈλ±μ€μμ λ°μ΄ν°λ₯Ό κ²μνλ€.- λ§μ½ μΈλ±μ€κ° μλͺ»λλ©΄
IndexOutOfBoundsException
μ΄ λ°μνλ€. μ΄ μμΈλ₯Ό κ·Έλλ‘ λμ§λ λμ ,DataNotFoundException
μ΄λΌλ μ¬μ©μ μ μ μμΈλ‘ λ³ν - μ΄λ κ² μ μμ€ μμΈλ₯Ό κ³ μμ€ μμΈλ‘ λ²μνμ¬ λ μλ―Έ μλ μ 보λ₯Ό μ 곡ν μ μλ€.
DataNotFoundException
μ κ³ μμ€ μμΈλ‘, μμΈ λ©μμ§λ₯Ό ν΅ν΄ λ¬Έμ κ° λ¬΄μμΈμ§ λ λͺ ννκ² μ μ μλ€.
λ©μλ λͺΈμ²΄ μ€ν μ μ 맀κ°λ³μ μ ν¨μ±μ κ²μ¬ν΄μΌ νλ€λ κ·μΉμλ μμΈλ μ‘΄μ¬νλ€. λ°λ‘, μ ν¨μ± κ²μ¬ λΉμ©μ΄ μ§λμΉκ² λκ±°λ μ€μ©μ μ΄μ§ μμ λ, νΉμ κ³μ° κ³Όμ μμ μ묡μ μΌλ‘ κ²μ¬κ° μνλ λμ΄λ€.
μλ₯Ό λ€μ΄ νμμ κ²½μ°, Collections.sort(List)
μ²λΌ κ°μ²΄ 리μ€νΈλ₯Ό μ λ ¬νλ λ©μλλ₯Ό μκ°ν΄λ³΄λ©΄ 리μ€νΈ μμ κ°μ²΄λ€μ λͺ¨λ μνΈ λΉκ΅λμ΄ μμ΄μΌ νλ©° λΉκ΅λ μ μλ νμ
μ κ°μ²΄κ° λ€μ΄μλ€λ©΄ ClassCastExceptionμ λμ§λ€. νμ§λ§ μ묡μ μ ν¨μ± κ²μ¬μ λ무 μμ‘΄νλ€λ©΄ μ€ν¨ μμμ±(μμ΄ν
76)μ ν΄μΉ μ μμΌλ μ£Όμνμ.
λ©μλλ μμ±μλ₯Ό μμ±ν λλ 맀κ°λ³μλ€μ μ΄λ ν μ μ½μ΄ μμ μ§ μκ°ν΄μΌ νλ€.
κ·Έ μ μ½λ€μ λ¬Έμννκ³ λ©μλ μ½λ μμ λΆλΆμμ λͺ μμ μΌλ‘ κ²μ¬νλ©΄, μ ν¨μ± κ²μ¬κ° μ€μ μ€λ₯λ₯Ό μ²μ κ±Έλ¬λΌ λ ν¨κ³Όλ₯Ό λ³Ό κ²μ΄λ€.
- μλ¬κ° λ λ§ν λΆλΆμ 미리 κ±Έλ¬λ΄μ λμ€μ 볡μ‘ν μλ¬λ₯Ό λ§λ€μ§ λ§μ.
λ¨, 무μμ 맀κ°λ³μμ λ§μ μ μ½μ κ±Έμ§ λ§μ. λ©μλλ μ΅λν λ²μ©μ μΌλ‘ μμ±λλ κ²μ΄ λ§λ€.
- λ©μλ μμ± μ, 맀κ°λ³μμ μ ν¨μ± κ²μ¬λ λ°λμ νμν©λλ€. νΉν
null
κ²μ¬λ₯Ό ν΅ν΄ μμμΉ λͺ»ν NullPointerExceptionμ λ°©μ§νκ³ , λ κ²¬κ³ ν μ½λλ₯Ό μμ±ν μ μλ€. - Javaμ
assert
λ κ°λ° μ€ λλ²κΉ λͺ©μ μΌλ‘λ μ μ©νμ§λ§, νλ‘λμ νκ²½μμμ μ ν¨μ± κ²μ¬μλ μ ν©νμ§ μλ€. λ°λΌμ μ€μν κ²μ¬μλObjects.requireNonNull()
κ³Ό κ°μ λͺ μμ μΈ λ°©μμ μ¬μ©νλ κ²μ΄ μ’λ€. - 맀κ°λ³μ μ ν¨μ± κ²μ¬ μ λΉμ©κ³Ό μ€μ©μ±μ ν¨κ» κ³ λ €νκ³ , 무쑰건 λͺ¨λ κ²½μ°λ₯Ό κ²μ¬ν기보λ€λ νμν κ²½μ°μλ§ μ μ©νμ¬ ν¨μ¨μ μΈ μ½λλ₯Ό μμ±νλ κ²μ΄ μ’λ€.
μΆμ² λ° μ°Έκ³