μλ¬ μ²λ¦¬
try ... catch ... finally
μλ¬ μ²λ¦¬ ꡬννλ λ°©λ²μ ν¬κ² λκ°μ§
- μμΈ μ μΈ μν©μ΄ λ°μ μ λ°ν νλ κ°μ if λ¬Έ, λ¨μΆ νκ°, μ΅μ λ 체μ΄λ λ±μΌλ‘ μ§μ νμΈνλ λ°©λ²
- μλ¬ μ²λ¦¬ μ½λλ₯Ό 미리 λ±λ‘ν΄ λκ³ μλ¬κ° λ°μνλ©΄ μλ¬ μ²λ¦¬ μ½λλ‘ μ ννλλ‘ νλ λ°©λ²
try ... catch ... finally
λ λλ² μ§Έ λ°©λ²3κ°μ μ½λ λΈλ‘μΌλ‘ ꡬμ±
try {
// μ€ν ν μ½λ(μλ¬κ° λ°μν κ°λ₯μ±μ΄ μλ μ½λ)
} catch (err) { // err λ³μλͺ
μ λ€λ₯Έ κ±° ν΄λ λ¨
// try μ½λ λΈλ‘μμ μλ¬κ° λ°μνλ©΄ μ΄ μ½λ λΈλ‘μ μ½λκ° μ€ν λλ€.
// errμλ try μ½λ λΈλ‘μμ λ°μν Error κ°μ²΄κ° μ λ¬λλ€.
} finally {
// μλ¬ λ°μκ³Ό μκ΄μμ΄ λ°λμ ν λ² μ€ν λ¨
}
finally
λ¬Έμ λΆνμ νλ€λ©΄ μλ΅ κ°λ₯
Error κ°μ²΄
Error
μμ±μ ν¨μλ μλ¬ κ°μ²΄λ₯Ό μμ±Error
μμ±μ ν¨μμλ μλ¬ λ©μΈμ§λ₯Ό μ λ¬ κ°λ₯
const error = new Error('this is Error message');
Error
κ°μ²΄λmessage
νλ‘νΌν°μstack
νλ‘νΌν°λ₯Ό κ°μ§λ€- message νλ‘νΌν° : Error μμ±μ ν¨μμ μΈμλ‘ μ λ¬ν μλ¬ λ©μΈμ§
- stack νλ‘νΌν° : μλ¬λ₯Ό λ°μμν¨ μ½μ€νμ νΈμΆ μ 보λ₯Ό λνλ΄λ λ¬Έμμ΄ (λλ²κΉ λͺ©μ )
μλ°μ€ν¬λ¦½νΈλ μλ¬ κ°μ²΄λ₯Ό μμ±ν μ μλ μμ±μ ν¨μλ₯Ό 7κ°μ§ μ 곡
λͺ¨λ Error.prototypeμ μμ λ°λλ€
μμ±μν¨μ | μΈμ€ν΄μ€ |
---|---|
Error | μΌλ°μ μλ¬ κ°μ²΄ |
SyntaxError | μλ°μ€ν¬λ¦½νΈ λ¬Έλ²μ λ§μ§ μλ λ¬Έμ ν΄μν λ λ°μνλ κ°μ²΄ |
ReferenceError | μ°Έμ‘°ν μ μλ μλ³μλ₯Ό μ°Έμ‘°νμ λ λ°μνλ μλ¬ κ°μ²΄ |
TypeError | νΌμ°μ°μ λλ μΈμμ λ°μ΄ν° νμ μ΄ μ ν¨νμ§ μμ λ λ°μνλ μλ¬ κ°μ²΄ |
RangeError | μ«μ κ°μ νμ© λ²μλ₯Ό λ²μ΄λ¬μ λ λ°μνλ μλ¬ κ°μ²΄ |
URIError | encodeURI λλ decodeURI ν¨μμ λΆμ μ ν μΈμλ₯Ό μ λ¬ νμ λ λ°μνλ μλ¬ κ°μ²΄ |
EvalError | eval ν¨μμμ λ°μνλ μλ¬ κ°μ²΄ |
throw λ¬Έ
- μλ¬ κ°μ²΄λ₯Ό μμ±νλ€κ³ μλ¬κ° λ°μ λλ κ² μλ
- μλ¬λ₯Ό λ°μμν€λ €λ©΄
try
μ½λ λΈλ‘μμthrow
λ¬ΈμΌλ‘ μλ¬ κ°μ²΄λ₯Ό λμ ΈμΌ νλ€. throw
λ¬Έμ ννμμ μ΄λ€ κ°μ΄λΌλ μκ΄ μμ§λ§ μΌλ°μ μΌλ‘ μλ¬ κ°μ²΄λ₯Ό μ§μ - μλ¬λ₯Ό λμ§λ©΄
catch
λ¬Έμ λ³μκ° μμ±λκ³ λμ Έμ§ μλ¬ κ°μ²΄κ° ν λΉ λ¨
μλ¬μ μ ν
- μλ¬λ νΈμΆμ(
caller
) λ°©ν₯μΌλ‘ μ ν λλ€. - μ¦, μ½ μ€νμ μλ λ°©ν₯(μ€ν μ€μΈ μ€ν 컨ν μ€νΈκ° νΈμλκΈ° μ§μ μ νΈμλ μ€ν 컨ν μ€νΈμ λ°©ν₯)μΌλ‘ μ ν
const foo = () => {
throw Error('fooμμ λ°μν μλ¬');
};
const bar = () => {
foo();
};
const baz = () => {
bar();
};
try {
baz();
}catch (err) {
console.error(err);
}
- μ μμμ κ²½μ° foo μ€ν 컨ν μ€νΈμμ μλ¬κ° throw λμ§λ§ μ½μ€ν μλ λ°©ν₯μΌλ‘ μ νλμ΄ μ μ μ€ν 컨νμ€νΈμμ catch λλ€
- μλ μ μ μ€ν 컨νμ€νΈμ try λ΄λΆμμ baz(); ν¨μλ₯Ό νΈμΆνκΈ° λλ¬Έμ μ΄ ν¨μκ° νΈμΆμ(
caller
)μ΄λ€. - μ£Όμν κ²μ λΉλκΈ° ν¨μμΈ
setTimeout
μ΄λ νλ‘λ―Έμ€ νμ μ²λ¦¬ λ©μλμ μ½λ°± ν¨μλ νΈμΆμκ° μλ€λ κ² setTimeout
μ΄λ νλ‘λ―Έμ€ νμ μ²λ¦¬ λ©μλλ νμ€ν¬ νλ λ§μ΄ν¬λ‘ νμ€ν¬νμ μΌμ μ μ₯ λμλ€κ³ , μ½ μ€νμ΄ λΉλ©΄ μ΄λ²€νΈ 루νμ μν΄ μ½ μ€νμΌλ‘ νΈμλμ΄ μ€ν λλ€.- μ΄λ μ½ μ€νμ νΈμλ μ½λ°± ν¨μμ μ€ν 컨ν μ€νΈλ μ½ μ€νμ κ°μ₯ νλΆμ μ‘΄μ¬νκΈ° λ무μ μλ¬λ₯Ό μ νν νΈμΆμκ° μ‘΄μ¬ νμ§ μλλ€.
'javascript > π study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[11μ£Όμ°¨ μ€ν°λ]49μ₯-Babelκ³Ό Webpack μ΄μν ES6+/ES.NEXT κ°λ°νκ²½ κ΅¬μΆ (0) | 2022.04.08 |
---|---|
[11μ£Όμ°¨ μ€ν°λ]48μ₯-λͺ¨λ (0) | 2022.04.08 |
[11μ£Όμ°¨ μ€ν°λ]46μ₯-μ λλ μ΄ν°μ async / await (0) | 2022.04.08 |
[10μ£Όμ°¨ μ€ν°λ]45μ₯-νλ‘λ―Έμ€ (0) | 2022.04.02 |
[10μ£Όμ°¨ μ€ν°λ]44μ₯-REST API (0) | 2022.04.02 |
λκΈ