ν”„λ‘œκ·Έλž˜λ°μ—λŠ” 세가지 μ’…λ₯˜μ˜ μ—λŸ¬κ°€ μžˆμŠ΅λ‹ˆλ‹€.

 (a) λ¬Έλ²•μ—λŸ¬ (b) λŸ°νƒ€μž„ μ—λŸ¬ (c) 논리적 μ—λŸ¬

문법 μ—λŸ¬

λ¬Έλ²•μ—λŸ¬λŠ” νŒŒμ‹±μ—λŸ¬λΌκ³ λ„ ν•©λ‹ˆλ‹€. 문법상 λ§žμ§€ μ•Šμ•„μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬μ£ . λ¬Έλ²•μ—λŸ¬λŠ” μ»΄νŒŒμΌμ‹œμ— μ—λŸ¬κ°€ μžˆλ‹€κ³  μ•Œλ €μ£ΌκΈ°λ•Œλ¬Έμ— μ°ΎκΈ°μ‰¬μš΄ μ—λŸ¬μž…λ‹ˆλ‹€.

μ•„λž˜ μ˜ˆμ œλŠ” λ‹«λŠ” κ΄„ν˜Έλ₯Ό 빼먹은 λ¬Έλ²•μ—λŸ¬μž…λ‹ˆλ‹€.

<script type="text/javascript">
<!--
window.print(;
//-->
</script>

 

λŸ°νƒ€μž„ μ—λŸ¬

λŸ°νƒ€μž„μ—λŸ¬λŠ” μ˜ˆμ™ΈλΌκ³ λ„ ν•˜λ©° μ‹€ν–‰μ‹œμ— μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€. μ•„λž˜ μ˜ˆμ œλŠ” 문법은 μ–΄κΈ‹λ‚˜μ§€ μ•Šμ§€λ§Œ μ‹€ν–‰μ‹œμ— 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λ €κ³  ν•˜κΈ° λ•Œλ¬Έμ΄μ£ .

<script type="text/javascript">
<!--
window.printme();
//-->
</script>

 

논리적 μ—λŸ¬

λ…Όλ¦¬μ μœΌλ‘œ μ—λŸ¬κ°€ λ°œμƒν•œ 것은 μ°ΎκΈ°κ°€ νž˜λ“  μ—λŸ¬μž…λ‹ˆλ‹€. λ¬Έλ²•μ μœΌλ‘œλ„ 맞고 μ‹€ν–‰μ‹œμ— μ•„λ¬΄λŸ° λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•Šμ§€λ§Œ μ›ν•˜λŠ” 값이 μ•ˆλ‚˜μ˜€λŠ” 그런 μ—λŸ¬μ΄κΈ° λ•Œλ¬Έμ— λ‚΄κ°€ κ΅¬ν˜„ν•œ 둜직이 잘λͺ»λ˜μ–΄μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬λΌκ³  λ³΄μ‹œλ©΄ λ©λ‹ˆλ‹€.

try...catch...finally

μžλ°”μ—μ„œ μ“°λŠ” try-catchμ ˆμ„ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλ„ μ“Έ μˆ˜κ°€ μžˆλ„€μš”
<script type="text/javascript">
<!--
try {
    // Code to run
    [break;]
} catch ( e ) {
    // Code to run if an exception occurs
    [break;]
}[ finally {
    // Code that is always executed regardless of 
    // an exception occurring
}]
//-->
</script>

 

예제:

μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  경우 μ–΄λ–»κ²Œ μ—λŸ¬κ°€ λ°œμƒν•˜λŠ”μ§€ ν•œλ²ˆ λ³ΌκΉŒμš”? μ—λŸ¬λŠ” λΈŒλΌμš°μ €λ³„λ‘œ λ‹€λ₯Έκ²Œ 보일 수 μžˆλ‹€λŠ” 것을 λͺ…μ‹¬ν•˜μ„Έμš”. 

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
var a = 100;

alert("Value of variable a is : " + myFunc2() );

} //--> </script> </head> <body> <p>Click the following to see the result:</p> <form> <input type="button" value="Click Me" onclick="myFunc();" /> </form> </body> </html>

 

 

이제 try...catch μ ˆμ„ μ΄μš©ν•΄μ„œ μ—λŸ¬λ₯Ό μž‘μ•„λ³΄λ„λ‘ ν•˜μ£ .

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
   var a = 100;
   
   try {
      alert("Value of variable a is : " + myFunc2() );
   } catch ( e ) {
      alert("Error: " + e.description );
   }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

 

 

finally λŠ” try-catchμ ˆμ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•˜λ“  μ•ˆν•˜λ“  항상 싀행이 λ˜λŠ” λΆ€λΆ„μž…λ‹ˆλ‹€.

<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
   var a = 100;
   
   try {
      alert("Value of variable a is : " + myFunc2()  );
   }catch ( e ) {
      alert("Error: " + e.description );
   }finally {
      alert("Finally block will always execute!" );
   }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

 

 

throw 절

throwμ—­μ‹œ μžλ°”μ— μžˆλŠ” κ°œλ…μ΄μ£ . μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμ„ λ•Œ λ‚΄κ°€ μ²˜λ¦¬μ•ˆν•˜κ³  λ‹€λ₯Έλ…€μ„ν•œν…Œ μ²˜λ¦¬ν•΄λ‹¬λΌκ³  λ˜μ§€λŠ” λ†ˆμž…λ‹ˆλ‹€. throw의 사전적 μ˜λ―Έκ°€ "λ˜μ§€λ‹€" μž…λ‹ˆλ‹€. μ•„λž˜ 예제λ₯Ό ν•œλ²ˆ 보죠.
<html>
<head>
<script type="text/javascript">
<!--
function myFunc()
{
   var a = 100;
   var b = 0;
   
   try{
      if ( b == 0 ){
         throw( "Divide by zero error." ); 
      }else{
         var c = a / b;
      }
   }catch ( e ) {
      alert("Error: " + e );
   }
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

 

b에 0을 ν• λ‹Ήν•˜κ³  bκ°€ 0이면 throw ν•˜λ„λ‘ λ§Œλ“  μ˜ˆμ œλ„€μš”. throwκ°€ μ–΄λ–€ μ‹μœΌλ‘œ 화면에 ν‘œν˜„λ˜λŠ”μ§€ ν•œλ²ˆ μ‹€ν–‰ν•΄λ³΄μ„Έμš”. 

 

onerror() λ©”μ†Œλ“œ

 onerror λ©”μ†Œλ“œλŠ” JavaScriptμ—μ„œ μ—λŸ¬ν•Έλ“€λ§μ„ μœ„ν•΄μ„œ 제일 처음 λ‚˜μ˜¨ κΈ°λŠ₯이라고 ν•©λ‹ˆλ‹€.  error μ΄λ²€νŠΈλŠ” μ›ΉνŽ˜μ΄μ§€μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν–ˆμ„λ•Œ windowκ°μ²΄μ—μ„œ λ°œμƒμ‹œν‚΅λ‹ˆλ‹€. μ•„λž˜ 예제λ₯Ό ν•œλ²ˆ λ³ΌκΉŒμš”.

<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function () {
   alert("An error occurred.");
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ 경고창을 λ„μš°λ„λ‘ 해놓고 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” μ˜ˆμ œκ΅°μš”.

ν•œλ²ˆ μ‹€ν–‰ν•΄λ³΄μ„Έμš”. 

 

 onerror 이벀트 ν•Έλ“€λŸ¬λŠ” 세가지 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

  • μ—λŸ¬λ©”μ‹œμ§€ . λΈŒλΌμš°μ €κ°€ λ³΄μ—¬μ£ΌλŠ” μ—λŸ¬λ©”μ‹œμ§€μž…λ‹ˆλ‹€.

  • URL . μ—λŸ¬κ°€ λ°œμƒν•œ νŒŒμΌμ„ μ•Œλ €μ€λ‹ˆλ‹€.

  • 라인 λ„˜λ²„ . μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨ 라인이 λͺ‡λ²ˆμ§Έ 라인인지λ₯Ό μ•Œλ €μ€λ‹ˆλ‹€.

이 세가지 정보λ₯Ό μ–΄λ–»κ²Œλ°›μ•„μ˜€λŠ”μ§€ ν•œλ²ˆ λ³ΌκΉŒμš”?

<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function (msg, url, line) {
   alert("Message : " + msg );
   alert("url : " + url );
   alert("Line number : " + line );
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc();" />
</form>
</body>
</html>

 

 

 

 onerror λ©”μ†Œλ“œλŠ” μ•„λž˜μ™€κ°™μ΄ 이미지λ₯Ό λΆˆλŸ¬μ˜¬λ•Œ μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ λ©”μ‹œμ§€λ₯Ό 보여주기 μœ„ν•΄μ„œ μ‚¬μš©λ  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

<img src="myimage.gif"
    onerror="alert('An error occurred loading the image.')" />

 

이 onerrorλ©”μ†Œλ“œλŠ” 이미지 νƒœκ·Έ 이외에도 λ‹€λ₯Έ νƒœκ·Έμ—μ„œλ„ μ‚¬μš©λ  수 μžˆλ‹€λŠ” 것을 μ•Œμ•„λ‘μ‹œλ©΄ 쒋을 λ“― μ‹Άλ„€μš”.

 

 

 

Reference : http://www.tutorialspoint.com/javascript/javascript_error_handling.htm