๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

JavaScript

[ JavaScript / Error ] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Error ๊ฐ์ฒด

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด  Error ๊ฐ์ฒด๋ฅผ ๋˜์ ธ์ฃผ๊ณ  ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด๋ฅผ ํ†ตํ•ด ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ณ  ๋””๋ฒ„๊น…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. Error์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์—๋Ÿฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Error ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์—๋Ÿฌ ๊ฐ์ฒด๋Š” message ํ”„๋กœํผํ‹ฐ(Error ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€)์™€ stack ํ”„๋กœํผํ‹ฐ(์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ์ฝœ์Šคํƒ์˜ ํ˜ธ์ถœ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด)๋ฅผ ๊ฐ–๋Š”๋‹ค. 

 

 

 

 

 

์•„๋ž˜์˜ ํ‘œ๋ฅผ ํ†ตํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œ์ค€ ๋‚ด์žฅ ์˜ค๋ฅ˜ ์œ ํ˜•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

์œ ํ˜•(์ƒ์„ฑ์ž ํ•จ์ˆ˜) ์ธ์Šคํ„ด์Šค
EvalError ์ „์—ญ ํ•จ์ˆ˜ eval()์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด
RangeError ์ˆซ์ž ๋ณ€์ˆ˜๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด
ReferenceError ์ž˜๋ชป๋œ ์ฐธ์กฐ์— ๋Œ€ํ•ด ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด
SyntaxError ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์— ๋งž์ง€ ์•Š๋Š” ๋ฌธ์„ ํ•ด์„ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด
TypeError ๋ณ€์ˆ˜๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์œ ํšจ ์ž๋ฃŒํ˜•์ด ์•„๋‹ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด
URIError encodeURI(), decodeURI() ํ•จ์ˆ˜์— ๋ถ€์ ์ ˆํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด
AggregateError ๋‹ค์ˆ˜์˜ ์—๋Ÿฌ๊ฐ€ ํ•œ ์—๋Ÿฌ๋กœ ๋žฉํ•‘ ๋˜์–ด์•ผ ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด
InternalError ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ๋‚ด๋ถ€์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ์—๋Ÿฌ ๊ฐ์ฒด
Error ์ผ๋ฐ˜์ ์ธ ์—๋Ÿฌ ๊ฐ์ฒด

* ์ž์ฃผ ์ ‘ํ•˜๋Š” ์œ ํ˜•์€ ๊ตต์€ ํ‘œ์‹œ.

 

 

 

 

 

 

 

 

Error ๊ฐ์ฒด์˜ ์ธ์Šคํ„ด์Šค ์†์„ฑ

์†์„ฑ ์„ค๋ช…
Error.prototype.message ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€
Error.prototype.name ์˜ค๋ฅ˜ ์ด๋ฆ„
Error.prototype.fileName ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๋น„ํ‘œ์ค€ ๋ชจ์งˆ๋ผ ์†์„ฑ
Error.prototype.lineNumber ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ํŒŒ์ผ์˜ ์ค„ ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๋น„ํ‘œ์ค€ ๋ชจ์งˆ๋ผ ์†์„ฑ
Error.prototype.columnNumber ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ํŒŒ์ผ์˜ ์นธ ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๋น„ํ‘œ์ค€ ๋ชจ์งˆ๋ผ ์†์„ฑ
Error.prototype.stack
์Šคํƒ ์ถ”์ ์„ ์œ„ํ•œ ๋น„ํ‘œ์ค€ ๋ชจ์งˆ๋ผ ์†์„ฑ

** ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋กœ๋Š” Error.prototype.toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

 

 

 

 

Error์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜

new Error()
new Error(message)
new Error(message, fileName)
new Error(message, fileName, lineNumber)

 

- message : Error ์ƒ์„ฑ์ž ํ•จ์ˆ˜์—์„œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€.

- fileName : ์ƒ์„ฑํ•  Error ๊ฐ์ฒด์˜ fileName ์†์„ฑ์œผ๋กœ ์„ค์ •ํ•  ๊ฐ’. ๊ธฐ๋ณธ ๊ฐ’์€ Error ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ํŒŒ์ผ์˜ ์ด๋ฆ„. 

- lineNumber : ์ƒ์„ฑํ•  Error ๊ฐ์ฒด์˜ lineNumer ์†์„ฑ์œผ๋กœ ์„ค์ •ํ•  ๊ฐ’. ๊ธฐ๋ณธ ๊ฐ’์€ Error ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ค„์˜ ๋ฒˆํ˜ธ.

 

 

 

 

 

 

 

 

 

๐Ÿ‘‰ Error ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๋ณดํ†ต throw ๋ฌธ์„ ํ†ตํ•ด Error์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์ƒ์„ฑ๋œ ์—๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๋˜์ ธ์ค€๋‹ค.

try...catch...finally ๋ฌธ์„ ํ†ตํ•ด ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

try {
	if(isNaN(width)){
    	  throw "์ˆซ์ž ํƒ€์ž…๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!"; // throw ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œํ‚ค๊ธฐ.
    }
} catch (e) {
  console.log(e); // output: "์ˆซ์ž ํƒ€์ž…๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!"
}

 

throw ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ throw ๋œ ์—๋Ÿฌ๋ฅผ ์บ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด throw ์—๋Ÿฌ๋Š” ํ˜ธ์ถœ์ž ๋ฐฉํ–ฅ์œผ๋กœ ์—๋Ÿฌ๊ฐ€ ์ „ํŒŒ๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ•์ œ ์ข…๋ฃŒ๋œ๋‹ค!!

 

 

 

 

 

 

 


 

 

 

 

 

 

 

๐Ÿ‘‰ Error ๊ฐ์ฒด์˜ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ_22.06.21 ๊ธฐ์ค€

 

 

 

 

 

 

 

 

 

 

๐Ÿงš๐Ÿป ์ฐธ์กฐ ๐Ÿงš๐Ÿป

MDN - Error()์ƒ์„ฑ์ž

MDN - ํ‘œ์ค€ ๋‚ด์žฅ ๊ฐ์ฒด Error

MDN - throw๋ฌธ