{"id":502,"date":"2020-05-25T09:00:48","date_gmt":"2020-05-25T00:00:48","guid":{"rendered":"http:\/\/mobilelab.khu.ac.kr\/?p=502"},"modified":"2020-04-05T18:59:06","modified_gmt":"2020-04-05T09:59:06","slug":"be-dart-programmer-19","status":"publish","type":"post","link":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/2020\/05\/25\/be-dart-programmer-19\/","title":{"rendered":"Dart Programmer \ub418\uae30 [19]"},"content":{"rendered":"\n<h4>&lt; Dart \uae30\ucd08\ubb38\ubc95 &#8211; Exception Handling &gt;<\/h4>\n\n\n\n<p>Exception\uc740 \ud504\ub85c\uadf8\ub7a8\uc758 \ub3d9\uc791 \uc911\uc5d0 \uc608\uc0c1\ud558\uc9c0 \ubabb\ud55c \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud558\uc5ec, \ub354 \uc774\uc0c1 \uc815\uc0c1\uc801\uc778 \ub3d9\uc791\uc774 \ubd88\uac00\ub2a5\ud55c \uc5d0\ub7ec \uc0c1\ud669\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \uc774\ub7f0 Exception\uc774 \uc81c\ub300\ub85c \ucc98\ub9ac\ub418\uba74, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\uc740 \ud588\uc9c0\ub9cc, \ud504\ub85c\uadf8\ub7a8\uc744 \ub3d9\uc791\uc744 \uc774\uc5b4\uac08 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubc18\ub300\ub85c \uc81c\ub300\ub85c \ucc98\ub9ac\uac00 \ub418\uc9c0 \uc54a\uc73c\uba74, \ud504\ub85c\uadf8\ub7a8\uc740 \uc815\uc0c1\uc801\uc778 \uc791\uc5c5\uc744 \ub354\uc774\uc0c1 \uc218\ud589\ud560 \uc218 \uc5c6\uace0 \uc885\ub8cc\ud558\uac8c \ub429\ub2c8\ub2e4. <\/p>\n\n\n\n<h4>Exception &amp; Error in Dart Language<\/h4>\n\n\n\n<p>Dart \uc5b8\uc5b4\ub294 \uc5d0\ub7ec\ub97c \ub2e4\ub8e8\ub294 \ud070 \ubc94\uc8fc\uc778 Exception \ub0b4\uc5d0 \uc138\ubd80\uc801\uc73c\ub85c \ub450\uac00\uc9c0 \uc720\ud615\uc744 \uc815\uc758\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uccab\uc9f8\ub294 Exception\uc774\uba70, \ub458\uc9f8\ub294 Error \uc785\ub2c8\ub2e4. \uc774\ub4e4\uc740 \ubaa8\ub450 \uace0\uc720\uba85\uc0ac\ub85c\uc11c, Dart \uc5b8\uc5b4\uc5d0\uc11c \uc5d0\ub7ec\ub97c \uc758\ubbf8\ud558\ub294 \ud074\ub798\uc2a4\ub4e4\uc774 \uc788\ub294\ub370, \uac01\uac01\uc758 \ud074\ub798\uc2a4\uc758 \uc774\ub984\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Exception \ud074\ub798\uc2a4\ub294 \ud504\ub85c\uadf8\ub7a8\uc758 \uc624\ub958\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \uac1c\ubc1c\uc790\uc5d0\uac8c \uc804\ub2ec\ud558\uc5ec, \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \ud1b5\ud55c \uc624\ub958 \ud574\uacb0\uc744 \ub3c4\uc640\uc8fc\ub294 \uae30\ub2a5\uc785\ub2c8\ub2e4. Dart \uc5b8\uc5b4\ub294 \uc790\uc8fc \ubc1c\uc0dd\ud558\ub294 Exception \ub4e4\uc5d0 \ub300\ud574\uc11c \uc5b8\uc5b4\uc548\uc5d0 \ub0b4\uc7a5\ud574 \ub450\uc5c8\ub294\ub370, \uc774\ub4e4\uc740 Dart \uc5b8\uc5b4\uc758 <a href=\"https:\/\/api.dart.dev\/stable\/2.7.1\/dart-core\/Exception-class.html\">Exception Class \uc124\uba85 \ubd80\ubd84<\/a>\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4. \ub300\ud45c\uc801\uc778 Exception\uc774 \uc544\ub798\uc5d0\uc11c \uc124\uba85\ud560 IntegerDivisionByZeroException \ub85c\uc368, \ubd84\ubaa8\uac00 0\uc778 \ub098\ub204\uae30\uac00 \ubc1c\uc0dd\ud558\ub294 \uacbd\uc6b0\ub97c \uc758\ubbf8\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Error \ud074\ub798\uc2a4\ub294 Program\uc774 Fail\ub41c \uc0c1\ud0dc\ub97c \uc758\ubbf8\ud558\uc5ec, \ud504\ub85c\uadf8\ub798\uba38\uac00 \ud53c\ud574\uc57c \ud558\ub294 \uc624\ub958 \uc0c1\ud669\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \uc774 \uacbd\uc6b0\ub3c4 Dart \uc5b8\uc5b4\uc5d0\uc11c \ubbf8\ub9ac \uc790\uc8fc \ubc1c\uc0dd\ud558\ub294 Error \ub4e4\uc5d0 \ub300\ud574\uc11c \uc5b8\uc5b4 \uc548\uc5d0 \ub0b4\uc7a5\ud574 \ub450\uc5c8\ub294\ub370, \uc774\ub4e4\uc740 Dart \uc5b8\uc5b4\uc758 <a href=\"https:\/\/api.dart.dev\/stable\/2.7.1\/dart-core\/Error-class.html\">Error Class \uc124\uba85 \ubd80\ubd84<\/a>\uc5d0\uc11c \ud655\uc778 \uac00\ub2a5\ud569\ub2c8\ub2e4. \ub300\ud45c\uc801\uc778 Error\ub294 \uc544\ub798\uc5d0\uc11c \uc124\uba85\ud560 \uc778\ub371\uc2a4 \uac12\uc744 \uc81c\ub300\ub85c \uc8fc\uc9c0 \uc54a\uc544\uc11c List \ub4f1\uc774 \uc624\ub3d9\uc791 \ud558\ub294 \uacbd\uc6b0\uc640, \ud568\uc218\uc758 \uc785\ub825 \ud30c\ub77c\uba54\ud0c0 \uac2f\uc218 \ud639\uc740 \ud0c0\uc785\uc774 \ud2c0\ub9b0 \uacbd\uc6b0 \ub4f1 \uc785\ub2c8\ub2e4. <\/p>\n\n\n\n<p>Exception\uacfc Error\ub97c \uad6c\ubd84\ud558\uae30\ub294 \uc560\ub9e4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubb38\uc81c\uac00 \ubc1c\uc0dd \uac00\ub2a5\ud55c \ud568\uc218\uc5d0 \ub300\ud574\uc11c, \ub9cc\uc57d \uc608\uce21 \uac00\ub2a5\ud558\uac70\ub098 catch \uac00\ub2a5\ud55c \ubb38\uc81c\uc5d0 \ud574\ub2f9 \ud55c\ub2e4\uba74, Error\uac00 \uc544\ub2cc Exception\uc73c\ub85c \ubcfc \uc218 \uc788\uc73c\uba70, \uc774\ub7f0 \uacbd\uc6b0\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc885\ub8cc\ud558\ub294 \uac83\uc774 \ucd5c\uc120\uc758 \ubc29\ubc95\uc785\ub2c8\ub2e4 (An Exception &#8220;indicates conditions that a reasonable application might want to catch.&#8221; [<a href=\"https:\/\/stackoverflow.com\/questions\/5813614\/what-is-difference-between-errors-and-exceptions\">\ucd9c\ucc98<\/a>]). Error\uc758 \uacbd\uc6b0\ub294 \ud568\uc218\uc5d0 \ub300\ud55c \uc124\uba85\uc5d0\uc11c &#8220;must&#8221;\uc640 &#8220;must not&#8221;\uacfc \uac19\uc740 \uc124\uba85\uc744 \ud1b5\ud574\uc11c, \uc5d0\ub7ec\uac00 \ub098\ub294 \uc0c1\ud669\uacfc \uc870\uac74\uc744 \ubbf8\ub9ac \uba85\ud655\ud558\uac8c \uc124\uba85\ud574\uc11c, \ud568\uc218\ub97c \ud638\ucd9c \ud558\uace0\uc790 \ud558\ub294 \uac1c\ubc1c\uc790\uac00 Error\ub97c \ub9cc\ub4e4\uc9c0 \uc54a\ub3c4\ub85d \ud574\uc57c \ud569\ub2c8\ub2e4(An Error &#8220;indicates serious problems that a reasonable application should not try to catch.&#8221; [<a href=\"https:\/\/stackoverflow.com\/questions\/5813614\/what-is-difference-between-errors-and-exceptions\">\ucd9c\ucc98<\/a>]). \ub530\ub77c\uc11c, \ud568\uc218 \uc548\uc5d0\uc11c error\ub97c \ub9cc\ub4e0 \ub2e4\ub294 \uac83\uc740, \uba85\ud655\ud558\uac8c \uc81c\uc2dc\ud55c \uc870\uac74\uc744 \uc5b4\uae34 \uc608\uce21 \uac00\ub2a5\ud55c \uc0c1\ud669\uc774\uba70, \uc774\uc804\uc5d0 \uac1c\ubc1c\uc790\ub294 \uc774\ub7f0 \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub3c4\ub85d \uc219\uc9c0\ud558\uace0, \ud53c\ud574\uc57c \ud569\ub2c8\ub2e4. \uc5b4\uca4c\uba74 \uc774\ub7ec\ud55c \uc774\uc720\ub85c (\ucda9\ubd84\ud788 \uaddc\uce59\uc744 \uc9c0\ucf1c\uc11c \ubc1c\uc0dd\ud558\uba74 \uc548\ub418\ub294) Error Handling \ubcf4\ub2e4\ub294, Exception Handling\uc774 \ub9ce\uc774 \uc4f0\uc774\ub294 \ud45c\ud604\uc77c\uc9c0 \ubaa8\ub974\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>Exception &amp; Error in Program<\/h4>\n\n\n\n<p>\uc2e4\uc81c \uac04\ub2e8\ud55c \ud504\ub85c\uadf8\ub7a8\uc744 \ub9cc\ub4e4\uc5b4\uc11c Exception\uacfc Error\ub97c \uc720\ubc1c\ud558\uc5ec \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc544\ub798\uc758 darttutorial-19-01.dart  \ud504\ub85c\uadf8\ub7a8\uc740 \uac04\ub2e8\ud55c \ub450 \uac1c\uc758 \ud568\uc218\ub97c \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. funcDivide \ud568\uc218\ub294 \ub450\ubc88\uc9f8 \uc785\ub825 \ud30c\ub77c\uba54\ud0c0\ub85c \uccab\ubc88\uc9f8 \uc785\ub825 \ud30c\ub77c\uba54\ud0c0\ub97c \uc815\uc218 \ub098\ub204\uae30 \ud558\uc5ec \ubaab\uc744 return \ud558\ub3c4\ub85d \ub9cc\ub4e4\uc5b4 \uc84c\uc2b5\ub2c8\ub2e4. \uc5b4\ub5a4 \uacbd\uc6b0\uc5d0 \uc774 \ubb38\ubc95\uc774 \uc81c\ub300\ub85c \ub3d9\uc791\ud558\uc9c0 \ubabb\ud560\uc9c0 \uc608\uc0c1\uc774 \ub429\ub2c8\uae4c? \ub450\ubc88\ub54c \ud568\uc218\uc740 funcGetIndexedValue \ud568\uc218\ub294 \uccab\ubc88\uc9f8 \uc785\ub825 \ud30c\ub77c\uba54\ud0c0\ub85c \ubc1b\uc740 List\uc5d0\uc11c, \ub450\ubc88\uc9f8 \uc785\ub825 \ud30c\ub77c\uba54\ud0c0\ub97c \uc778\ub371\uc2a4\ub85c \uc0ac\uc6a9\ud558\uc5ec element \ud558\ub098\ub97c \ucd94\ucd9c\ud558\uc5ec return \ud569\ub2c8\ub2e4. \ub450\ubc88\uc9f8\uc758 \uacbd\uc6b0\ub3c4 \uc5b4\ub5a4 \uc0c1\ud669\uc5d0\uc11c \uc5d0\ub7ec\uac00 \ub098\ub294\uc9c0 \uc608\uce21\uc774 \ub418\ub294\uc9c0\uc694? main \ud568\uc218\ub97c \ubcf4\uba74 4\uac00\uc9c0 \uc2e4\ud589 \uad6c\ubb38\uc774 \uc788\uc73c\uba70, \uccab\uc9f8\uc640 \uc14b\uc9f8\ub294 \uc815\uc0c1\ub3d9\uc791\uc744 \ud558\uace0 \ub458\uc9f8\uc640 \ub137\uc9f8\ub294 \uc5d0\ub7ec\ub97c \ubc1c\uc0dd\ud558\ub3c4\ub85d \ub9cc\ub4e4\uc5c8\uc73c\ub2c8 \ucc9c\ucc9c\ud788 \uc5d0\ub7ec\uac00 \uc65c \ubc1c\uc0dd\ud558\ub294\uc9c0\uc640 \uc774\ub97c \uc5b4\ub5bb\uac8c \ub9c9\uc744 \uc9c0\ub97c \uc0dd\uac01\ud574 \ubd05\ub2c8\ub2e4.<\/p>\n\n\n\n<pre>\/\/ darttutorial-19-01.dart \n\/\/ Corrected version of darttutorial-19-01.dart\n\nfuncDivide(var para1, var para2) {\n  return para1 ~\/ para2;\n}\n\nfuncGetIndexedValue(var paraList, var paraIndex) {\n  return(paraList[paraIndex]);\n}\n\nfuncPrintValue(var para1, var para2) {\n  print(\"#$para1 $para2\");\n}\n\nvoid main() {\n  var myResult;\n  var myList = [1 ,2, 3];\n  \n  myResult = funcDivide(1, 1);\n  funcPrintValue(1, myResult);\n\n  myResult = funcDivide(1, 0);\n  funcPrintValue(2, myResult);\n\n  myResult = funcGetIndexedValue(myList, 0);\n  funcPrintValue(3, myResult);\n\n  myResult = funcGetIndexedValue(myList, 4);\n  funcPrintValue(4, myResult);\n}\n<\/pre>\n\n\n\n<p>\uc774 \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud558\uba74, myResult = funcDivide(1, 0); \ubd80\ubd84\uc5d0\uc11c \uc5d0\ub7ec\uac00 \ub098\uace0 \uc544\ub798\uc640 \uac19\uc740 \ud654\uba74\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"962\" height=\"1024\" src=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.21.01-962x1024.png\" alt=\"\" class=\"wp-image-507\" srcset=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.21.01-962x1024.png 962w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.21.01-282x300.png 282w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.21.01-768x817.png 768w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.21.01-480x511.png 480w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.21.01.png 999w\" sizes=\"(max-width: 962px) 100vw, 962px\" \/><figcaption>[\uadf8\ub9bc 1] IntegerDivisionByZeroException Exception \ubc1c\uc0dd \ud654\uba74<\/figcaption><\/figure>\n\n\n\n<p>\ubb34\uc5c7\uc774 \ubb38\uc81c \uc77c\uae4c\uc694? \ucef4\ud4e8\ud130 \ud504\ub85c\uadf8\ub7a8\uc740 \ubd84\ubaa8\uac00 0\uc73c\ub85c \ub418\uc5b4 \uc788\uc73c\uba74, \ub9e4\uc6b0 \uc804\uc124\uc801\uc778 \uc624\ub958\uc778 &#8220;Divide by Zero&#8221; Exception\uc774 \ubc1c\uc0dd\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c 1\uc744 0\uc73c\ub85c \ub098\ub204\ub824\ub294 \uc2dc\ub3c4\ub294 Exception\uc758 \ubc1c\uc0dd\uc744 \uc57c\uae30\ud558\uace0 \ud504\ub85c\uadf8\ub7a8\uc740 \uc815\uc0c1\uc801\uc778 \ub3d9\uc791\uc744 \ud558\uc9c0 \ubabb\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\uc774\ub7f0 \uc5d0\ub7ec \uc0c1\ud669\uc744 \ub9cc\ub098\ub294 \ub300\ubd80\ubd84\uc758 \uac1c\ubc1c\uc790\ub294 \uc77c\ub2e8 \uc5d0\ub7ec\uac00 \ub09c \ucf54\ub4dc\ub97c \ub118\uaca8\ubcf4\ub824\ub294 \uc2dc\ub3c4\ub97c \ud558\ub294 \uacbd\uc6b0\uac00 \uc885\uc885 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\uba74, \uc5d0\ub7ec \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud558\ub294 funcPrintValue() \ud568\uc218 \ud638\ucd9c \ubd80\ubd84\uc744 \ub2e4 \ub9c9\uc544 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \ubd80\ubd84\uc740 \uc8fc\uc11d\ucc98\ub9ac\uc5d0\uc11c \ubd24\ub358 \ub2e4\uc911 \ub77c\uc778\uc5d0 \ub300\ud55c \uc8fc\uc11d \ucc98\ub9ac\ub85c \uc77c\ub2e8 \ub9c9\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \uc774\ubc88\uc5d0\ub294 \uc544\ub798\uc640 \uac19\uc740 \uc0c8\ub85c\uc6b4 \uc5d0\ub7ec \ud654\uba74\uc744 \ub9cc\ub098\uac8c \ub429\ub2c8\ub2e4. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"962\" height=\"1024\" src=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.25.05-962x1024.png\" alt=\"\" class=\"wp-image-508\" srcset=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.25.05-962x1024.png 962w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.25.05-282x300.png 282w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.25.05-768x817.png 768w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.25.05-480x511.png 480w, http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/02\/\u1109\u1173\u110f\u1173\u1105\u1175\u11ab\u1109\u1163\u11ba-2020-02-01-\u110b\u1169\u1112\u116e-6.25.05.png 999w\" sizes=\"(max-width: 962px) 100vw, 962px\" \/><figcaption>[\uadf8\ub9bc 2] RangeError \ubc1c\uc0dd \ud654\uba74<\/figcaption><\/figure>\n\n\n\n<p>\ud654\uba74\uc758 \uc67c\ucabd\uc744 \ubcf4\uba74, Exception \uc0c1\ud669\uc778\ub370 \uc544\ub798\ub85c \ub0b4\ub824\uac00 \ubcf4\uba74, __errorName\uc774 &#8220;RangeError (Index)&#8221;\ub85c \ub418\uc5b4 \uc788\uace0, \uc774\uc720\ub97c \uc124\uba85\ud55c __errorExaplanation\uc5d0 &#8220;Not in range 0..2, inclusive: 4&#8243;\uc758 \uae34 \uc124\uba85\uc774 \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub984 \ubd80\ud130 \ubcf4\uba74 range \uac12, \uc989 List\uc5d0\uc11c \uc801\uc808\ud558\uc9c0 \uc54a\uc740 Index\ub97c \uc8fc\uc5c8\ub2e4\ub294 \uc758\ubbf8\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc124\uba85\uc744 \ubcf4\uba74, 0~2\uae4c\uc9c0\uc758 Index\uac00 \uc720\uc758\ubbf8 \ud55c \uacbd\uc6b0\uc778\ub370, 4\ub97c \uc8fc\uc5c8\uc73c\ub2c8 \uc5d0\ub7ec\uac00 \ub0ac\ub2e4\ub294 \uac83\uc744 \uad6c\uccb4\uc801\uc73c\ub85c \uc54c\ub824\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>try &#8211; catch Statement<\/h4>\n\n\n\n<p>Dart \uc5b8\uc5b4\uc5d0\uc11c\ub294 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uac83 \uac19\uc740 \uad6c\ubb38\uc744 \uc2e4\ud589\ud558\ub2e4\uac00, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uba74, \ud574\ub2f9 \uc5d0\ub7ec\ub97c \ub300\uc751\ud558\ub294 \ucf54\ub4dc\ub97c \uc81c\uacf5\ud574\uc11c, \uc5d0\ub7ec\ub85c \uc778\ud55c \ud504\ub85c\uadf8\ub7a8\uc758 \uc911\uac04\uc774 \uc5c6\ub3c4\ub85d \ud558\ub294 \ubb38\ubc95\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uc9c0 \ubaa8\ub974\ub294 \ucf54\ub4dc\uc5d0 \ub300\ud574\uc11c \uc2e4\ud589\uc744 \uc2dc\ub3c4\ud558\ub294 \uad6c\ubb38\uc744 try { &#8230; } \ubb38\ubc95\uc774\ub77c\uace0 \ud558\uba70, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud55c \uacbd\uc6b0\uc5d0 \ub300\ucc98\ud558\ub3c4\ub85d \ud558\ub294 \uad6c\ubb38\uc744 catch { &#8230; } \ud639\uc740 on <em>Exception\/Error<\/em> { &#8230; } \uad6c\ubb38\uc774\ub77c\uace0 \ud569\ub2c8\ub2e4. \uc774 \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud574\uc11c, darttutorial-19-01.dart \ud504\ub85c\uadf8\ub7a8\uc744 \uac1c\uc120\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\uc73c\uba74 \uc815\uc0c1\uc801\uc778 \ub3d9\uc791\uc744 \ud558\uace0, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\ub294 \uc21c\uac04\uc5d0\ub294 \uc5d0\ub7ec\ub97c \ubb34\uc2dc\ud558\ub3c4\ub85d \ud558\uc5ec, \uc774\ud6c4\uc5d0\uc11c \ud504\ub85c\uadf8\ub7a8\uc758 \uc9c4\ud589\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc9c4\ud589\ub420 \uc218 \uc788\ub294 \ubd80\ubd84\ub4e4\uc740 \uc815\uc0c1\uc801\uc73c\ub85c \ucc98\ub9ac\ud558\uace0, \uc815\uc0c1\uc801\uc778 \uc0c1\ud0dc\uc5d0\uc11c \ud504\ub85c\uadf8\ub7a8\uc774 \ub9c8\uccd0\uc9c0\ub3c4\ub85d \ud558\ub294 \uac83\uc774 \ubaa9\ud45c\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<pre>\/\/ darttutorial-19-02.dart \n\/\/ Corrected version of darttutorial-19-01.dart\n\nfuncDivide(var para1, var para2) {\n  try {\n    return para1 ~\/ para2;\n  } on IntegerDivisionByZeroException {\n    print('IntegerDivisionByZeroException');\n    return null;\n  } catch (e) {\n    print('Exception: $e');\n    return null;\n  }\n}\n\nfuncGetIndexedValue(var paraList, var paraIndex) {\n  try {\n    return(paraList[paraIndex]);\n  } catch (e) {\n    print('Exception: $e');\n    return null;\n  }\n}\n\nfuncPrintValue(var para1, var para2) {\n  if(para2 != null) {\n    print(\"#$para1 $para2\");\n  } else {\n    print(\"#$para1 null\");\n  }\n}\n\nvoid main() {\n  var myResult;\n  var myList = [1 ,2, 3];\n  \n  myResult = funcDivide(1, 1);\n  funcPrintValue(1, myResult);\n\n  myResult = funcDivide(1, 0);\n  funcPrintValue(2, myResult);\n\n  myResult = funcGetIndexedValue(myList, 0);\n  funcPrintValue(3, myResult);\n\n  myResult = funcGetIndexedValue(myList, 4);\n  funcPrintValue(4, myResult);\n}\n<\/pre>\n\n\n\n<p>main() \ud568\uc218\ub294 \uc218\uc815\uc5c6\uc774 \ub3d9\uc77c\ud569\ub2c8\ub2e4. \ubd84\ubaa8\uac00 0\uc778 \uacbd\uc6b0\uc5d0 \uc5d0\ub7ec\uac00 \ub098\ub358 funcDivide() \ud568\uc218\uac00 \ub9e4\uc6b0 \ubcf5\uc7a1\ud574 \uc9c4 \uac83\uc744 \ubcfc\uc218 \uc788\uc2b5\ub2c8\ub2e4. \uba3c\uc800 try { &#8230; } \uc548\uc5d0 \uc6d0\ub798 \ud574\uc57c\ud560 \ub098\ub204\uae30\uc640 return \uad6c\ubb38\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc601\uc5b4 \ud45c\ud604 \uadf8\ub300\ub85c &#8220;\uc77c\ub2e8 \uc2dc\ub3c4\ud558\uc790&#8221;\ub85c \ud574\uc11d\ud558\uba74 \ub418\uaca0\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774 \uad6c\ubb38\uc744 \uc218\ud589\ud558\ub2e4\uac00 \ubd84\ubaa8\uac00 0\uc774\uba74, \uacb0\uad6d \uc5d0\ub7ec\uac00 \ub0a0 \uac81\ub2c8\ub2e4. \uc774 \uc5d0\ub7ec\ub97c \ucc98\ub9ac\ud558\ub294 \uad6c\ubb38\uc774 \uc774\uc5b4\uc9c0\ub294 on &#8230; { &#8230; } \uad6c\ubb38\uacfc catch( &#8230; ) { &#8230; } \uc785\ub2c8\ub2e4. \ud604\uc7ac\uc758 \ucf54\ub4dc\uc5d0\uc11c\ub294 on IntegerDivisionByZeroException { &#8230; }\uc774 \uba3c\uc800 \ub098\ud0c0\ub0a9\ub2c8\ub2e4. \uc774\ub294 try \uad6c\ubb38 \uc548\uc758 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub2e4\uac00 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud55c \uacbd\uc6b0, \uc774\uc5b4\uc9c0\ub294 on\/catch \uad6c\ubb38\uc5d0 \ub300\ud574\uc11c \uc5d0\ub7ec\uac00 \ubd80\ud569\ud558\ub294\uc9c0\ub97c \ud655\uc778 \ud569\ub2c8\ub2e4. \uccab\ubc88\uc9f8 \uad6c\ubb38\uc774 on IntegerDivisionByZeroException \uc778\ub370, \uc774\ub294 \uc601\uc5b4\ub97c \uc798 \uc77d\uc5b4 \ubcf4\uba74, &#8220;0\uc73c\ub85c \uc815\uc218 \ub098\ub204\uae30\ub97c \ud558\ub294 \ubc14\ub78c\uc5d0 \uc0dd\uae34 Exception&#8221;\uc774\ub77c\ub294 \uc758\ubbf8\uc785\ub2c8\ub2e4. \ud604\uc7ac \uc6b0\ub9ac\uac00 \uacaa\ub294 \uc5d0\ub7ec \uc0c1\ud669\uc774 \ubc14\ub85c \uc774 \uc0c1\ud669\uc785\ub2c8\ub2e4. \ub530\ub77c\uc11c, main()\uc5d0\uc11c \ubd84\ubaa8\ub97c 0\uc73c\ub85c \uc8fc\ub294 \uacbd\uc6b0\ub294 \uc774 \uacbd\uc6b0\uc5d0 \ud574\ub2f9\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c, \ud504\ub85c\uadf8\ub7a8\uc758 \ud750\ub984\uc744 \uba48\ucd94\uc9c0 \uc54a\ub3c4\ub85d \ucd94\uac00\uc801\uc778 \uc791\uc5c5\uc744 \ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud604\uc7ac\uc758 \uacbd\uc6b0\ub294 \uc77c\ub2e8 \ud654\uba74\uc5d0 \uc5d0\ub7ec\uc758 \uc774\uc720\ub97c \ucd9c\ub825\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0 null \uac12\uc744 return \ud558\uc5ec \ud504\ub85c\uadf8\ub7a8\uc774 \uc774\uc5b4\uc838\uc11c \uc218\ud589\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. \ub9cc\uc57d \uc774 \uacbd\uc6b0\uc5d0 \ud574\ub2f9\ud558\uc9c0 \uc54a\ub294 \ub2e4\ub978 \uc5d0\uc5b4\ub77c\uba74, \ub2e4\uc74c\uc758 \uad6c\ubb38\uc774 \uc774\uc5b4\uc838\uc11c \ud655\uc778 \ub418\ub294\ub370, \uc5b4\ub5bb\uac8c \ubcf4\uba74 if { &#8230; } else if { &#8230; } else if { &#8230; } else { &#8230; }\uc758 \uc6a9\ubc95\uacfc \ub9e4\uc6b0 \ud761\uc0ac\ud569\ub2c8\ub2e4. \ud604\uc7ac\uc758 \uacbd\uc6b0\ub294, \uad6c\uccb4\uc801\uc73c\ub85c \uc5d0\ub7ec\uc758 \uc6d0\uc778\uc744 \uae30\uc220\ud55c IntegerDivisionByZeroException\uac00 \uc544\ub2c8\uba74, \ubb34\uc870\uac74 \ubaa8\ub4e0 \uc5d0\ub7ec\ub97c catch(e)\uc5d0\uc11c \ucc98\ub9ac\ud558\ub3c4\ub85d \ud55c\uac83 \uc785\ub2c8\ub2e4. else { &#8230; } \uad6c\ubb38\uc5d0 \ubd80\ud569\ud55c\ub2e4\uace0 \ubcf4\uba74 \ub418\uaca0\uc9c0\uc694. \ub530\ub77c\uc11c, \uc774 \uacbd\uc6b0\ub294 \ud654\uba74\uc5d0 Exception\uc758 \uc774\ub984\uc744 \ucd9c\ub825\ud558\uace4, null \uac12\uc744 return\ud558\uc5ec, \ud504\ub85c\uadf8\ub7a8\uc774 \uc774\uc5b4\uc9c0\ub3c4\ub85d \ud569\ub2c8\ub2e4. \ub9cc\uc57d, \uc6b0\ub9ac\uac00 on IntegerDivisionByZeroException { &#8230; }\uc744 \uc9c0\uc6b4\ub2e4\uba74 \uc5b4\ub5a8 \uae4c\uc694? \uadf8\ub807\ub2e4\uba74, catch(e) \uad6c\ubb38\uc5d0 \uac78\ub824\uc11c \ucc98\ub9ac\uac00 \ub418\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud55c\ubc88 on IntegerDivisionByZeroException { &#8230; }\uc744 \uc9c0\uc6d0\uc11c \uc9c1\uc811 \ud655\uc778\ud574 \ubcf4\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>funcGetIndexedValue() \ud568\uc218\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\ub85c try\uc640 catch \uad6c\ubb38\uc73c\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. try \uad6c\ubb38\uc548\uc5d0 \uc788\ub294 \ub0b4\uc6a9\uc744 \uc218\ud589\ud558\ub2e4\uac00 \uc5d0\ub7ec\uac00 \ub098\uba74 \uc774\uc5b4\uc9c0\ub294 catch \uad6c\ubb38\uc744 \ud1b5\ud574\uc11c \uc218\ud589\uc744 \uc774\uc5b4\uac00\uace0 \uc788\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\ub450\uac1c\uc758 \ud568\uc218 \uc548\uc744 try\uc640 catch \uad6c\ubb38\uc73c\ub85c \uc5d0\ub7ec\uac00 \ub098\ub354\ub77c\ub3c4 \ud504\ub85c\uadf8\ub7a8\uc758 \uc218\ud589\uc774 \uc774\uc5b4\uc9c0\ub3c4\ub85d \ud588\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c, \uc5d0\ub7ec\uac00 \ub0ac\uc5b4\uc57c \ud558\ub294 \ubd80\ubd84\uc5d0\uc11c null \uac12\uc73c\ub85c \ucc98\ub9ac\uac00 \ub41c \uac83\uc744 \uac10\uc548\ud558\uc5ec, funcPrintValue \ud568\uc218\uc548\uc5d0\uc11c \uc870\uac74\ubb38\uc73c\ub85c null \uc5ec\ubd80\ub97c \ud655\uc778 \ud6c4, \uc5d0\ub7ec\uac00 \ub098\uc9c0 \uc54a\uc740 \ubd80\ubd84\uc740 \uacb0\uacfc\ub97c \uc81c\ub300\ub85c \ucd9c\ub825\ud558\uace0, \uc5d0\ub7ec\uac00 \ub0ac\uc5b4\uc57c \ud558\ub294 \ubd80\ubd84\uc740 null \uac12\uc744 \ucd9c\ub825\ud55c \uc774\ud6c4, \ud504\ub85c\uadf8\ub7a8\uc744 \uc815\uc0c1\uc801\uc73c\ub85c \uc885\ub8cc\ud558\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<p>\uc5c5\uadf8\ub808\uc774\ub4dc\ub41c \ud504\ub85c\uadf8\ub7a8\uc758 \uc218\ud589\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre>#1 1\nException: IntegerDivisionByZeroException\n#2 null\n#3 1\nException: RangeError (index): Invalid value: Not in range 0..2, inclusive: 4\n#4 null\n<\/pre>\n\n\n\n<p>darttutorial-19-02.dart \ud504\ub85c\uadf8\ub7a8\uc744 \uc218\uc815\ud574\uc11c, try\uc640 catch \uad6c\ubb38\uc744 main() \ucabd\uc73c\ub85c \uc62e\uae38 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc989, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd \uac00\ub2a5\ud55c \ud568\uc218\ub97c \ud638\ucd9c\ud558\ub294 \ucabd\uc5d0\uc11c \uc5d0\ub7ec\uc5d0 \ub300\ud55c \ub300\ucc98\ub97c \ud558\ub294 \uac83\ub3c4 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc774\ub7f0 \ubc29\uc2dd\uc73c\ub85c \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc774 darttutorial-19-03.dart  \uc785\ub2c8\ub2e4. <\/p>\n\n\n\n<pre>\/\/ darttutorial-19-03.dart \n\/\/ Corrected version of darttutorial-19-01.dart\n\nfuncDivide(var para1, var para2) {\n  return para1 ~\/ para2;\n}\n\nfuncGetIndexedValue(var paraList, var paraIndex) {\n  return(paraList[paraIndex]);\n}\n\nfuncPrintValue(var para1, var para2) {\n  print(\"#$para1 $para2\");\n}\n\nvoid main() {\n  var myResult;\n  var myList = [1 ,2, 3];\n\n  try {\n    myResult = funcDivide(1, 0); \n  } on IntegerDivisionByZeroException {\n    print('IntegerDivisionByZeroException');\n    myResult = null;\n  } catch (e) {\n    print('Exception: $e');\n    myResult = null;\n  }\n\n  funcPrintValue(2, myResult);\n    \n  try {    \n    myResult = funcGetIndexedValue(myList, 4); \n  } catch (e) {\n    print('Exception: $e');\n    myResult = null;\n  }\n\n  funcPrintValue(4, myResult);\n}\n<\/pre>\n\n\n\n<h4>throw Statement<\/h4>\n\n\n\n<p>\uc6b0\ub9ac\uac00 catch \ud588\ub358 exception\/error \ub4e4\uc740 \ubaa8\ub450 Dart \uc5b8\uc5b4\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uac83\ub4e4\ub85c, \ud504\ub85c\uadf8\ub798\uba38\uac00 \uc790\uc8fc \ub9cc\ub4e4\uc5b4\uc11c \uc5b8\uc5b4\uc801\uc778 \ucc28\uc6d0\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 exception\/error \ub4e4\uc774\ub77c\uace0 \ubcf4\uba74 \ub429\ub2c8\ub2e4. Dart\ub294 \ud504\ub85c\uadf8\ub7a8\uc774 \ub3d9\uc791\ud558\ub2e4\uac00 \uc774\ub807\uac8c \uc5b8\uc5b4 \uc790\uccb4\uac00 \uac80\ucd9c \uac00\ub2a5\ud55c \uc5d0\ub7ec\ub4e4\uc774 \ubc1c\uc0dd\ud558\uba74, catch \uad6c\ubb38\uc5d0\uc11c \uc5d0\ub7ec\ub97c \uc7a1\uc744 \uc218 \uc788\ub3c4\ub85d \uc77c\uc885\uc758 \uc2e0\ud638\ub97c \ub9cc\ub4e4\uc5b4 \uc90d\ub2c8\ub2e4. \uc774\ub7f0 \ub3d9\uc791\uc744 throw\ub77c\uace0 \ud558\ub294\ub370, \ud504\ub85c\uadf8\ub798\uba38\uac00 \uc778\uc704\uc801\uc73c\ub85c exception\/error\ub97c \uc720\ubc1c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. darttutorial-19-03.dart\uc5d0 throw \ubb38\ubc95\uc744 \uc801\uc6a9\ud558\uae30 \uc704\ud558\uc5ec \uc77c\ubd80 \uc218\uc815\uc744 \ud558\uc600\uc2b5\ub2c8\ub2e4. \uc774\ub294 throw\uc640 \uc774\uc5b4\uc9c8 rethrow \uad6c\ubb38\uc744 \uc124\uba85\ud558\uae30 \uc704\ud55c \uc608\uc81c \uc77c\ubfd0 \uad6c\uc870\uac00 \uc801\uc808\ud558\uac8c \ub9cc\ub4e4\uc5b4\uc9c4 \ud504\ub85c\uadf8\ub7a8\uc740 \uc544\ub2d9\ub2c8\ub2e4.  <\/p>\n\n\n\n<pre>\/\/ darttutorial-19-04.dart \n\/\/ Corrected version of darttutorial-19-01.dart\n\nfuncDivide(var para1, var para2) {\n  try {\n    if(para2 == null) {\n      throw IntegerDivisionByZeroException;\n    } else {\n      return para1 ~\/ para2;\n    }\n  } catch (e) {\n    print('&gt;&gt; funcDivide:IntegerDivisionByZeroException');\n    rethrow;\n  }\n}\n\nfuncGetIndexedValue(var paraList, var paraIndex) {\n  try {\n    return(paraList[paraIndex]);\n  } catch (e) {\n    print('&gt;&gt; funcGetIndexedValue: $e');\n    rethrow;\n  }\n}\n\nfuncPrintValue(var para1, var para2) {\n  print(\"#$para1 $para2\");\n}\n\nvoid main() {\n  var myResult;\n  var myList = [1 ,2, 3];\n\n  try {\n    myResult = funcDivide(1, 0); \n  } on IntegerDivisionByZeroException {\n    print('&gt;&gt; main:IntegerDivisionByZeroException');\n    myResult = null;\n  } catch (e) {\n    print('Exception: $e');\n    myResult = null;\n  }\n\n  funcPrintValue(2, myResult);\n    \n  try {    \n    myResult = funcGetIndexedValue(myList, 4); \n  } catch (e) {\n    print('&gt;&gt; main: $e');\n    myResult = null;\n  }\n\n  funcPrintValue(4, myResult);\n}\n<\/pre>\n\n\n\n<p>funcDivide() \ud568\uc218\uc758 try \uad6c\ubb38 \uc548\uc744 \ubcf4\uba74, \uc870\uac74\ubb38\uc73c\ub85c \ubd84\ubaa8\uac00 0\uc778\uc9c0\ub97c \ud655\uc778\ud558\ub3c4\ub85d \ucd94\uac00 \ucf54\ub4dc\ub97c \ub123\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace4 \ubd84\ubaa8\uac00 0\uc778 \uacbd\uc6b0 \uc55e\uc11c\uc5d0\uc11c \ubcfc\uc218 \uc788\uc5c8\ub358 IntegerDivisionByZeroException\ub97c throw \ubb38\ubc95\uc73c\ub85c \uc778\uc704\uc801\uc73c\ub85c \uc0dd\uc131\ud558\ub294 \uad6c\ubb38\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ub9cc\ub4e4\uc5b4\uc9c4 \ud504\ub85c\uadf8\ub798\uba38\uac00 \ubc1c\uc0dd\uc2dc\ud0a8 IntegerDivisionByZeroException exception\uc740 \uc774\uc5b4\uc9c0\ub294 catch \uad6c\ubb38\uc5d0\uc11c \uc815\uc0c1\uc801\uc73c\ub85c \uc7a1\uc744 \uc218 \uc788\uc73c\uba70, \uc774\ub97c \ud1b5\ud574\uc11c \ud654\uba74\uc5d0 \uc815\ud574\uc9c4 \ubb38\uc7a5\uc774 \ucd9c\ub82b\ub418\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc5d0 \ucd94\uac00\uc801\uc778 \uad6c\ubb38\uc778 rethrow\uac00 \uc788\ub294\ub370, \uc774\ub294 re-throw \uc989, throw\ub97c \ub610 \ud55c\ub2e4\ub294 \uc758\ubbf8\uc785\ub2c8\ub2e4. \uc774\ub807\uac8c \ud568\uc73c\ub85c\uc368, \ud574\ub2f9 excpetion\uc744 funcDivide() \ud568\uc218\ub97c \ud638\ucd9c\ud588\ub358 \ucabd\uc73c\ub85c \ub2e4\uc2dc \uc7ac\uc804\ub2ec \ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud568\uc73c\ub85c\uc368, \ud568\uc218\uc548\uc5d0\uc11c \uc5d0\ub7ec\uc5d0 \ub300\ud574\uc11c \ucc98\ub9ac\ud560 \uc77c\uc744 \uc218\ud589\ud558\uace0, \ud544\uc694\ud558\ub2e4\uba74 \ud568\uc218\ub97c \ud638\ucd9c\ud55c \ucabd\uc5d0\uc11c\ub3c4 \ucd94\uac00\uc801\uc778 \uc791\uc5c5\uc744 \ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>try\/catch\/throw\/rethrow \uad6c\ubb38\uc744 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \ucd5c\uc801\uc778\uc9c0\uc5d0 \ub300\ud55c \ub2f5\uc740 \uc5c6\uc73c\uba70, \ud504\ub85c\uadf8\ub7a8\uc758 \uad6c\uc870\uc640 \ub3d9\uc791\uc5d0 \ub9de\ub294 \ud615\ud0dc\ub97c \ud504\ub85c\uadf8\ub798\uba38\uac00 \ucc3e\uc544\uac00\uc57c \ud569\ub2c8\ub2e4. Exception\/Error\ub3c4 \ud074\ub798\uc2a4\uc774\uba70, \uc774\ud6c4 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4dc\ub294 \uae00\uc744 \uc774\ud574\ud558\uba74, \ubcf8\uc778\uc774 \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub9de\ub294 \uc0c8\ub85c\uc6b4 Exception\/Error\ub97c \ub9cc\ub4e4\uc5b4 \ub0bc\uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc989, \ubcf8\uc778 \ud504\ub85c\uadf8\ub7a8 \ub0b4\uc5d0\uc11c\ub9cc \uc720\ud6a8\ud55c Exception\uacfc Error\ub97c \uc815\uc758\ud558\uace0, \uc774\uc5d0 \ub9de\ub294 \ucd5c\uc801\uc758 \ub300\uc751\uc774 \uac00\ub2a5\ud558\ub3c4\ub85d \ud558\uac8c \ud558\ub294 \uac83\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>finally Statement<\/h4>\n\n\n\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc0b4\ud3b4\ubcfc \ubb38\ubc95\uc740 finally \uc785\ub2c8\ub2e4. \uc774 \ubb38\ubc95\uc5d0 \ub300\ud55c \uc774\ud574\ub294 \uc608\uc81c\ub97c \ubcf4\uba74\uc11c \uc124\uba85\ud558\ub294 \uac83\uc774 \uc88b\uaca0\uc2b5\ub2c8\ub2e4. darttutorial-19-04.dart \ud504\ub85c\uadf8\ub7a8\uc5d0 finally\ub97c \ucd94\uac00\ud558\uace0, \uc5d0\ub7ec\uac00 \ub098\uc9c0 \uc54a\ub294 \uacbd\uc6b0\uc5d0 \ub300\ud55c main() \ud568\uc218\uc758 \ucf54\ub4dc\ub97c \ucd94\uac00\ud55c \uacb0\uacfc\uac00 darttutorial-19-05.dart \ud504\ub85c\uadf8\ub7a8 \uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<pre>\/\/ darttutorial-19-05.dart \n\/\/ Corrected version of darttutorial-19-01.dart\n\nfuncDivide(var para1, var para2) {\n  try {\n    if(para2 == null) {\n      throw IntegerDivisionByZeroException;\n    } else {\n      return para1 ~\/ para2;\n    }\n  } catch (e) {\n    print('&gt;&gt; funcDivide:IntegerDivisionByZeroException');\n    rethrow;\n  } finally {\n    print(':: completed...');\n  }\n}\n\nfuncGetIndexedValue(var paraList, var paraIndex) {\n  try {\n    return(paraList[paraIndex]);\n  } catch (e) {\n    print('&gt;&gt; funcGetIndexedValue: $e');\n    rethrow;\n  } finally {\n    print(':: completed...');\n  }\n}\n\nfuncPrintValue(var para1, var para2) {\n  print(\"#$para1 $para2\");\n}\n\nvoid main() {\n  var myResult;\n  var myList = [1 ,2, 3];\n\n  try {\n    print('#1');\n    myResult = funcDivide(1, 1); \n  } on IntegerDivisionByZeroException {\n    print('&gt;&gt; main:IntegerDivisionByZeroException');\n    myResult = null;\n  } catch (e) {\n    print('Exception: $e');\n    myResult = null;\n  }\n\n  funcPrintValue(1, myResult);\n\n  try {\n    print('#2');\n    myResult = funcDivide(1, 0); \n  } on IntegerDivisionByZeroException {\n    print('&gt;&gt; main:IntegerDivisionByZeroException');\n    myResult = null;\n  } catch (e) {\n    print('Exception: $e');\n    myResult = null;\n  }\n\n  funcPrintValue(2, myResult);\n    \n  try {  \n    print('#3');  \n    myResult = funcGetIndexedValue(myList, 0); \n  } catch (e) {\n    print('&gt;&gt; main: $e');\n    myResult = null;\n  }\n\n  funcPrintValue(3, myResult);\n\n  try {    \n    print('#4');\n    myResult = funcGetIndexedValue(myList, 4); \n  } catch (e) {\n    print('&gt;&gt; main: $e');\n    myResult = null;\n  }\n\n  funcPrintValue(4, myResult);\n}\n<\/pre>\n\n\n\n<p>darttutorial-19-05.dart \ud504\ub85c\uadf8\ub7a8\uc758 funcDivide \ud568\uc218\uc640 funcGetIndexedValue \ud568\uc218\ub97c \ubcf4\uba74, finally \uad6c\ubb38\uc774 \ub9c8\uc9c0\ub9c9\uc5d0 \ucd94\uac00\ub41c \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub984\uc774 \ubb38\ubc95\uc758 \uc5ed\ud560\uc744 \uc774\uc57c\uae30 \ud558\ub294\ub370, finally\ub294 \uc5d0\ub7ec\uac00 \uc5c6\ub294 try \uad6c\ubb38\uc758 \uc218\ud589\uc774 \ub9c8\uccd0\uc9c0\uac70\ub098, \ud639\uc740 catch\/on\uc758 \uc5d0\ub7ec \uad6c\ubb38\uc758 \uc218\ud589\uc774 \ub9c8\uccd0\uc84c\uc744\ub54c, \uc5b4\ub5a4 \uacbd\uc6b0\ub4e0 \uc0c1\uad00\uc5c6\uc774 \ub9c8\uc9c0\ub9c9\uc5d0 \uc218\ud589\uc774 \ub418\ub294 \ubb38\uc7a5\uc785\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc5d0\ub7ec\uac00 \uc5c6\ub294 \uacbd\uc6b0\ub294 try\uc5d0 \uc18d\ud55c \uad6c\ubb38\uc744 \uc218\ud589\ud558\uace0, finally\uc5d0 \uc18d\ud55c \uad6c\ubb38\uc744 \uc218\ud589\ud569\ub2c8\ub2e4. \uc5d0\ub7ec\uac00 \uc788\ub294 \uacbd\uc6b0\ub294 \uc5d0\ub7ec\ub97c \ucc98\ub9ac\ud558\ub294 \uad6c\ubb38\uc744 \uc218\ud589\ud558\uace0, finally\uc5d0 \uc18d\ud55c \uad6c\ubb38\uc744 \uc218\ud589\ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>darttutorial-19-05.dart \ud504\ub85c\uadf8\ub7a8\uc758 \uc218\ud589 \uacb0\uacfc\uc778 \uc544\ub798 \ubd80\ubd84\uc744 \ud655\uc778\ud558\uba74, main() \ud568\uc218\uc758 4\uac00\uc9c0 \ud568\uc218 \ud638\ucd9c\uc5d0\uc11c \uc5d0\ub7ec\uac00 \uc5c6\ub294 \uacbd\uc6b0\uc640 \uc5d0\ub7ec\uac00 \uc788\ub294 \ubaa8\ub4e0 \uacbd\uc6b0\uc5d0 \ub300\ud574\uc11c finally \uad6c\ubb38\uc774 \uc218\ud589\ub41c \uac83\uc744 \ud655\uc778 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre>#1\n:: completed...\n#1 1\n#2\n&gt;&gt; funcDivide:IntegerDivisionByZeroException\n:: completed...\n&gt;&gt; main:IntegerDivisionByZeroException\n#2 null\n#3\n:: completed...\n#3 1\n#4\n&gt;&gt; funcGetIndexedValue: RangeError (index): Invalid value: Not in range 0..2, inclusive: 4\n:: completed...\n&gt;&gt; main: RangeError (index): Invalid value: Not in range 0..2, inclusive: 4\n#4 null\n<\/pre>\n\n\n\n<h4>\ub9c8\ubb34\ub9ac<\/h4>\n\n\n\n<p>\uc774 \uae00\uc5d0\uc11c\ub294 \uc5d0\ub7ec \ud658\uacbd\uc774 \ubc1c\uc0dd\ud558\ub294 \uacbd\uc6b0\uc5d0\ub3c4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \ub3d9\uc791\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4. \uccab\uc9f8\ub85c \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294 \ubd80\ubd84\uc744 \uac10\uc2f8\uc8fc\ub294 try \uad6c\ubb38\uc774 \uc788\uc2b5\ub2c8\ub2e4. \ub458\uc9f8\ub85c \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uba74, \uc5d0\ub7ec\uc5d0 \ub300\ud55c \ub300\uc751\uc744 \ud574\uc11c \ud504\ub85c\uadf8\ub7a8\uc774 \uc885\ub8cc\ub418\uc9c0 \uc54a\ub3c4\ub85d \ud558\ub294 on\/catch \uad6c\ubb38\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc14b\uc9f8\ub85c on\/catch \uad6c\ubb38\uc774 \ucc98\ub9ac\ud560 exception\/error\ub97c \uc778\uc704\uc801\uc73c\ub85c \ub9cc\ub4dc\ub294 (\uc6d0\ub798 \uc804\ubb38 \uc6a9\uc5b4\ub85c raise\ub77c\uace0 \ud569\ub2c8\ub2e4) throw \uad6c\ubb38\uc744 \ubc30\uc6e0\uc2b5\ub2c8\ub2e4. \ub137\uc9f8\ub85c Exception\/Error\uac00 \ubc1c\uc0dd\ud55c \ud568\uc218\uc548\uc5d0\uc11c \uc801\uc808\ud55c \ucc98\ub9ac\ub97c \ub9c8\uce5c\ud6c4, \ud568\uc218\ub97c \ud638\ucd9c\ud55c \ucabd\uc73c\ub85c Exception\/Error\ub97c \uc7ac\uc804\ub2ec\ud558\uc5ec \ud544\uc694\ud55c \uc870\uce58\ub97c \ud558\ub3c4\ub85d \ud558\ub294 rethrow\uac00 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c try\/on\/catch \uad6c\ubb38\uc744 \ud1b5\ud574\uc11c \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uac70\ub098 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub354\ub77c\ub3c4, \ubaa8\ub4e0 \uacbd\uc6b0\uc5d0 \ub300\ud574\uc11c \ub9c8\ubb34\ub9ac \uc791\uc5c5\uc744 \ud560 \uc218 \uc788\ub3c4\ub85d \ud574\uc8fc\ub294 finally \uad6c\ubb38\uc744 \ub2e4\ub918\uc2b5\ub2c8\ub2e4. Exception\uacfc Error\ub294 \ubaa8\ub450 Dart \uc5b8\uc5b4\uc758 \ud45c\uc900 \ud074\ub798\uc2a4 \ud0c0\uc785\ub2c8\ub2e4. \uc774\ud6c4 \ud074\ub798\uc2a4\ub97c \uc9c1\uc811 \uac1c\ubc1c\uc790\uac00 \ub9cc\ub4dc\ub294 \uad6c\ubb38\ub3c4 \ub098\uc62c \uc608\uc815\uc778\ub370, Exception\uacfc Error\ub3c4 \uc774\uc5d0 \ud574\ub2f9\ud558\ub294 \ub0b4\uc6a9\uc774\ub2c8, \uc2dc\uac04\uc744 \ub0b4\uc5b4 Dart \uc5b8\uc5b4 \uc124\uba85\uc5d0\uc11c \ud574\ub2f9 \ub0b4\uc6a9\uc744 \uc219\ub3c5\ud574 \ubcf4\uae30 \ubc14\ub78d\ub2c8\ub2e4 [<a href=\"https:\/\/api.dart.dev\/stable\/2.7.1\/dart-core\/Exception-class.html\">\ucc38\uc870: Exception<\/a>] [<a href=\"https:\/\/api.dart.dev\/stable\/2.7.1\/dart-core\/Error-class.html\">\ucc38\uc870: Error<\/a>]. \ud2b9\ud788 Dart \uc5b8\uc5b4\ub294 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \ub9cc\ud55c \uc0ac\ud56d\uc744 \uc218\ud589\uc744 \ud574\ubd10\uc57c\uc9c0 \uc54c\uc218 \uc788\ub294 \uc5b8\uc5b4\uc774\uae30\uc5d0 (unchecked excpetion), \uc774 \uae00\uc5d0\uc11c\uc758 \uc5d0\ub7ec \uac80\ucd9c \ubc0f \ubc29\uc9c0\uac00 \ub9e4\uc6b0 \uc911\uc694\ud55c \uc5b8\uc5b4\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-content\/uploads\/2020\/01\/b05-1.jpg\" alt=\"\" class=\"wp-image-267\" width=\"137\" height=\"49\"\/><\/figure><\/div>\n\n\n\n<p><strong>Creative Commons License<\/strong> (<strong>CC BY-NC-ND<\/strong>)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&lt; Dart \uae30\ucd08\ubb38\ubc95 &#8211; Exception Handling &gt; Exception\uc740 \ud504\ub85c\uadf8\ub7a8\uc758 \ub3d9\uc791 \uc911\uc5d0 \uc608\uc0c1\ud558\uc9c0 \ubabb\ud55c \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud558\uc5ec, \ub354 \uc774\uc0c1 \uc815\uc0c1\uc801\uc778 \ub3d9\uc791\uc774 \ubd88\uac00\ub2a5\ud55c \uc5d0\ub7ec \uc0c1\ud669\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \uc774\ub7f0 Exception\uc774 \uc81c\ub300\ub85c \ucc98\ub9ac\ub418\uba74, \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\uc740 \ud588\uc9c0\ub9cc, &#8230;<\/p>\n","protected":false},"author":1,"featured_media":963,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[3],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/502"}],"collection":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=502"}],"version-history":[{"count":7,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/502\/revisions"}],"predecessor-version":[{"id":964,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/502\/revisions\/964"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media\/963"}],"wp:attachment":[{"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=502"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mobilelab.khu.ac.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}