{"id":779,"date":"2024-11-18T11:47:28","date_gmt":"2024-11-18T02:47:28","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=779"},"modified":"2025-03-24T08:52:50","modified_gmt":"2025-03-23T23:52:50","slug":"java%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86%e3%81%ae%e5%ae%9f%e8%b7%b5%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e7%8f%be%e5%a0%b4%e3%81%a7%e4%bd%bf%e3%81%88%e3%82%8b7%e3%81%a4%e3%81%ae%e3%83%99%e3%82%b9","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=779","title":{"rendered":"Java\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u8df5\u30ac\u30a4\u30c9\uff1a\u73fe\u5834\u3067\u4f7f\u3048\u308b7\u3064\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u5b9f\u88c5\u4f8b"},"content":{"rendered":"<div id=\"sgb-css-id-1\">\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">\u306f\u3058\u3081\u306b<\/a>  <\/li>  <li>    <a href=\"#i-1\">\uff11\uff0eJava\u4f8b\u5916\u51e6\u7406\u306e\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-2\">1.1 \u4f8b\u5916\u51e6\u7406\u304c\u5fc5\u8981\u306a\u7406\u7531\u3068\u57fa\u672c\u6982\u5ff5<\/a>      <\/li>      <li>        <a href=\"#i-5\">1.2 \u30c1\u30a7\u30c3\u30af\u4f8b\u5916\u3068\u30e9\u30f3\u30bf\u30a4\u30e0\u4f8b\u5916\u306e\u9055\u3044\u3068\u4f7f\u3044\u5206\u3051<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-9\">1.3 try-catch-finally\u30d6\u30ed\u30c3\u30af\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-12\">\uff12\uff0e\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-13\">2.1 try-with-resources\u3092\u4f7f\u7528\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406<\/a>      <\/li>      <li>        <a href=\"#i-16\">2.2 \u30de\u30eb\u30c1\u30ad\u30e3\u30c3\u30c1\u306b\u3088\u308b\u52b9\u7387\u7684\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-18\">2.3 \u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30af\u30e9\u30b9\u306e\u8a2d\u8a08\u3068\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-22\">\uff13\uff0e\u5b9f\u52d9\u3067\u5f79\u7acb\u3064\u4f8b\u5916\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-23\">3.1 \u9069\u5207\u306a\u7c92\u5ea6\u3067\u306e\u4f8b\u5916\u30ad\u30e3\u30c3\u30c1<\/a>      <\/li>      <li>        <a href=\"#i-25\">3.2 \u610f\u5473\u306e\u3042\u308b\u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4f5c\u6210\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-27\">3.3 \u4f8b\u5916\u306e\u30e9\u30c3\u30d7\u3068\u518d\u30b9\u30ed\u30fc\u6226\u7565<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-30\">\uff14\uff0e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u8a08\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-31\">4.1 \u30ec\u30a4\u30e4\u30fc\u5225\u306e\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u6226\u7565<\/a>      <\/li>      <li>        <a href=\"#i-33\">4.2 \u30ed\u30b0\u51fa\u529b\u3092\u8003\u616e\u3057\u305f\u4f8b\u5916\u8a2d\u8a08<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-36\">4.3 \u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u3092\u9ad8\u3081\u308b\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-38\">\uff15\uff0e\u3088\u304f\u3042\u308b\u5b9f\u88c5\u30df\u30b9\u3068\u6539\u5584\u65b9\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-39\">5.1 \u7a7a\u306ecatch\u30d6\u30ed\u30c3\u30af\u304c\u5f15\u304d\u8d77\u3053\u3059\u554f\u984c<\/a>      <\/li>      <li>        <a href=\"#i-41\">5.2 \u4f8b\u5916\u3092\u7121\u8996\u3059\u308b\u3053\u3068\u306e\u5371\u967a\u6027<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-43\">5.3 \u904e\u5270\u306a\u4f8b\u5916\u30ad\u30e3\u30c3\u30c1\u3092\u907f\u3051\u308b\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-46\">\uff16\uff0eSpring Framework\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-47\">6.1 @ExceptionHandler\u306e\u52b9\u679c\u7684\u306a\u4f7f\u3044\u65b9<\/a>      <\/li>      <li>        <a href=\"#i-49\">6.2 ResponseEntity\u3092\u4f7f\u7528\u3057\u305f\u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u8a2d\u8a08<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-51\">6.3 \u30b0\u30ed\u30fc\u30d0\u30eb\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u30fc\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-53\">\uff17\uff0e\u5b9f\u8df5\u7684\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-54\">7.1 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u6642\u306e\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/a>      <\/li>      <li>        <a href=\"#i-56\">7.2 \u5916\u90e8API\u3068\u306e\u9023\u643a\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-58\">7.3 \u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u4f8b\u5916\u51e6\u7406<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-60\">\u307e\u3068\u3081\uff1a\u52b9\u679c\u7684\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u73fe\u306b\u5411\u3051\u3066<\/a>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">\u306f\u3058\u3081\u306b<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-2\">\n<p>Java\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u306f\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3059\u308b\u4e0a\u3067\u6975\u3081\u3066\u91cd\u8981\u3067\u3059\u3002\u4f8b\u5916\u51e6\u7406\u3092\u9069\u5207\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u306b\u5bfe\u3057\u3066\u5805\u7262\u306b\u5bfe\u5fdc\u3057\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u5b89\u5b9a\u6027\u3092\u78ba\u4fdd\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-3\">\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001Java\u958b\u767a\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u306e\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u7684\u306a\u5b9f\u88c5\u4f8b\u307e\u3067\u30017\u3064\u306e\u91cd\u8981\u306a\u30c8\u30d4\u30c3\u30af\u306b\u5206\u3051\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002\u73fe\u5834\u3067\u3088\u304f\u906d\u9047\u3059\u308b\u72b6\u6cc1\u306b\u5bfe\u3059\u308b\u5177\u4f53\u7684\u306a\u5bfe\u51e6\u6cd5\u3084\u3001Spring Framework\u3092\u4f7f\u7528\u3057\u305f\u5b9f\u88c5\u4f8b\u306a\u3069\u3082\u542b\u3081\u3001\u5b9f\u8df5\u7684\u306a\u77e5\u8b58\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-4\">\n<p>\u3053\u306e\u8a18\u4e8b\u3092\u8aad\u3080\u3053\u3068\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u77e5\u8b58\u3068\u30b9\u30ad\u30eb\u3092\u7fd2\u5f97\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-8\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u672c\u8a18\u4e8b\u3067\u5b66\u3079\u308b\u3053\u3068<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-5\">\n<li>\u4f8b\u5916\u51e6\u7406\u306e\u57fa\u672c\u6982\u5ff5\u3068\u9069\u5207\u306a\u4f7f\u3044\u65b9<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-6\">\n<li>\u5b9f\u52d9\u3067\u4f7f\u3048\u308b\u4f8b\u5916\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-7\">\n<li>Spring Framework\u306b\u304a\u3051\u308b\u52b9\u679c\u7684\u306a\u4f8b\u5916\u51e6\u7406\u65b9\u6cd5<\/li>\n<\/div>\n\n\n<li>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3001\u5916\u90e8API\u9023\u643a\u3001\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u4f8b\u5916\u51e6\u7406\u5b9f\u88c5<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-9\">\n<p>\u305d\u308c\u3067\u306f\u3001\u5404\u30c8\u30d4\u30c3\u30af\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-10\">\n<h2 class=\"wp-block-heading\" id=\"i-1\">\uff11\uff0eJava\u4f8b\u5916\u51e6\u7406\u306e\u57fa\u790e\u77e5\u8b58<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-11\">\n<h3 class=\"wp-block-heading\" id=\"i-2\">1.1 \u4f8b\u5916\u51e6\u7406\u304c\u5fc5\u8981\u306a\u7406\u7531\u3068\u57fa\u672c\u6982\u5ff5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-12\">\n<p>\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u306f\u69d8\u3005\u306a\u4e88\u671f\u305b\u306c\u72b6\u6cc1\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a\u304c\u5207\u308c\u308b\u3001\u30e1\u30e2\u30ea\u304c\u4e0d\u8db3\u3059\u308b\u306a\u3069\u3001\u3053\u308c\u3089\u306e\u7570\u5e38\u7cfb\u306b\u9069\u5207\u306b\u5bfe\u5fdc\u3059\u308b\u3053\u3068\u306f\u3001\u5805\u7262\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u306f\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-13\">\n<h4 class=\"wp-block-heading\" id=\"i-3\">\u4f8b\u5916\u51e6\u7406\u306e\u91cd\u8981\u6027<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-14\">\n<p>\u3000\u25cf \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u7570\u5e38\u7d42\u4e86\u3092\u9632\u3050<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-15\">\n<p>\u3000\u25cf \u30a8\u30e9\u30fc\u767a\u751f\u6642\u306e\u9069\u5207\u306a\u51e6\u7406\u3092\u5b9f\u73fe\u3059\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-16\">\n<p>\u3000\u25cf \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306e\u53d6\u5f97\u3068\u554f\u984c\u306e\u8ffd\u8de1\u3092\u5bb9\u6613\u306b\u3059\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-17\">\n<p>\u3000\u25cf \u30e6\u30fc\u30b6\u30fc\u3078\u306e\u9069\u5207\u306a\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u63d0\u4f9b\u3059\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-18\">\n<h4 class=\"wp-block-heading\" id=\"i-4\">Java\u306e\u4f8b\u5916\u968e\u5c64\u69cb\u9020<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Throwable\u30af\u30e9\u30b9\u3092\u9802\u70b9\u3068\u3059\u308b\u4f8b\u5916\u306e\u968e\u5c64\u69cb\u9020\nThrowable\n\u251c\u2500\u2500 Error            \/\/ \u6df1\u523b\u306a\u30a8\u30e9\u30fc\uff08\u901a\u5e38\u56de\u5fa9\u4e0d\u53ef\u80fd\uff09\n\u2502   \u251c\u2500\u2500 OutOfMemoryError\n\u2502   \u2514\u2500\u2500 StackOverflowError\n\u2514\u2500\u2500 Exception        \/\/ \u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u51e6\u7406\u53ef\u80fd\u306a\u4f8b\u5916\n    \u251c\u2500\u2500 IOException  \/\/ \u30c1\u30a7\u30c3\u30af\u4f8b\u5916\u306e\u4f8b\n    \u2514\u2500\u2500 RuntimeException \/\/ \u975e\u30c1\u30a7\u30c3\u30af\u4f8b\u5916\u306e\u4f8b\n        \u251c\u2500\u2500 NullPointerException\n        \u2514\u2500\u2500 IllegalArgumentException<\/pre>\n\n\n<div id=\"sgb-css-id-19\">\n<h3 class=\"wp-block-heading\" id=\"i-5\">1.2 \u30c1\u30a7\u30c3\u30af\u4f8b\u5916\u3068\u30e9\u30f3\u30bf\u30a4\u30e0\u4f8b\u5916\u306e\u9055\u3044\u3068\u4f7f\u3044\u5206\u3051<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-20\">\n<h4 class=\"wp-block-heading\" id=\"i-6\">\u30c1\u30a7\u30c3\u30af\u4f8b\u5916\uff08\u691c\u67fb\u4f8b\u5916\uff09<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-21\">\n<p>\u3000\u25cf \u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u30c1\u30a7\u30c3\u30af\u3055\u308c\u308b\u4f8b\u5916<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-22\">\n<p>\u3000\u25cf try-catch\u306b\u3088\u308b\u51e6\u7406\u304b\u3001throws\u306b\u3088\u308b\u5ba3\u8a00\u304c\u5fc5\u9808<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-23\">\n<p>\u3000\u25cf \u56de\u5fa9\u53ef\u80fd\u306a\u4f8b\u5916\u3092\u8868\u73fe\u3059\u308b\u969b\u306b\u4f7f\u7528<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30c1\u30a7\u30c3\u30af\u4f8b\u5916\u306e\u4f8b\npublic void readFile(String path) throws IOException {\n    \/\/ \u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u3067IOException\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\n    BufferedReader reader = new BufferedReader(new FileReader(path));\n    \/\/ ...\n}<\/pre>\n\n\n<div id=\"sgb-css-id-24\">\n<h4 class=\"wp-block-heading\" id=\"i-7\">\u30e9\u30f3\u30bf\u30a4\u30e0\u4f8b\u5916\uff08\u975e\u691c\u67fb\u4f8b\u5916\uff09<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-25\">\n<p>\u3000\u25cf \u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306e\u30c1\u30a7\u30c3\u30af\u304c\u4e0d\u8981<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-26\">\n<p>\u3000\u25cf \u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d0\u30b0\u3092\u8868\u73fe\u3059\u308b\u3053\u3068\u304c\u591a\u3044<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-27\">\n<p>\u3000\u25cf \u901a\u5e38\u3001\u4e0a\u4f4d\u5c64\u3067\u307e\u3068\u3081\u3066\u51e6\u7406<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30e9\u30f3\u30bf\u30a4\u30e0\u4f8b\u5916\u306e\u4f8b\npublic void processData(String data) {\n    if (data == null) {\n        throw new IllegalArgumentException(\"\u30c7\u30fc\u30bf\u304cnull\u3067\u3059\");\n    }\n    \/\/ \u51e6\u7406\u7d9a\u884c\n}<\/pre>\n\n\n<div id=\"sgb-css-id-28\">\n<h4 class=\"wp-block-heading\" id=\"i-8\">\u4f7f\u3044\u5206\u3051\u306e\u6307\u91dd<\/h4>\n<\/div>\n\n<div id=\"id-e57074de-eaeb-4c3f-a434-0b42bfe4e5b1\"><div id=\"sgb-css-id-29\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u4f8b\u5916\u306e\u7a2e\u985e<\/th><th>\u4f7f\u7528\u3059\u3079\u304d\u72b6\u6cc1<\/th><th>\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>\u30c1\u30a7\u30c3\u30af\u4f8b\u5916<\/td><td>\u56de\u5fa9\u53ef\u80fd\u306a\u30a8\u30e9\u30fc<\/td><td>\u30d5\u30a1\u30a4\u30eb\u30a2\u30af\u30bb\u30b9\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a<\/td><\/tr><tr><td>\u30e9\u30f3\u30bf\u30a4\u30e0\u4f8b\u5916<\/td><td>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30a8\u30e9\u30fc<\/td><td>null\u53c2\u7167\u3001\u4e0d\u6b63\u306a\u5f15\u6570<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-30\">\n<h3 class=\"wp-block-heading\" id=\"i-9\">1.3 try-catch-finally\u30d6\u30ed\u30c3\u30af\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-31\">\n<h4 class=\"wp-block-heading\" id=\"i-10\">\u57fa\u672c\u69cb\u6587<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">try {\n    \/\/ \u4f8b\u5916\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u51e6\u7406\n    riskyOperation();\n} catch (SpecificException e) {\n    \/\/ \u7279\u5b9a\u306e\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u3066\u51e6\u7406\n    handleSpecificException(e);\n} catch (Exception e) {\n    \/\/ \u305d\u306e\u4ed6\u306e\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\n    handleGenericException(e);\n} finally {\n    \/\/ \u5fc5\u305a\u5b9f\u884c\u3055\u308c\u308b\u51e6\u7406\n    cleanup();\n}<\/pre>\n\n\n<div id=\"sgb-css-id-32\">\n<h4 class=\"wp-block-heading\" id=\"i-11\">\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u4f8b<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class FileProcessor {\n    public String readFileContent(String filePath) {\n        BufferedReader reader = null;\n        StringBuilder content = new StringBuilder();\n\n        try {\n            \/\/ \u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u3066\u8aad\u307f\u8fbc\u307f\n            reader = new BufferedReader(new FileReader(filePath));\n            String line;\n            while ((line = reader.readLine()) != null) {\n                content.append(line).append(\"\\n\");\n            }\n            return content.toString();\n\n        } catch (FileNotFoundException e) {\n            \/\/ \u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u306e\u51e6\u7406\n            log.error(\"\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: \" + filePath, e);\n            throw new BusinessException(\"\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\", e);\n\n        } catch (IOException e) {\n            \/\/ \u305d\u306e\u4ed6\u306eIO\u4f8b\u5916\u306e\u51e6\u7406\n            log.error(\"\u30d5\u30a1\u30a4\u30eb\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n            throw new BusinessException(\"\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n\n        } finally {\n            \/\/ \u30ea\u30bd\u30fc\u30b9\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\n            if (reader != null) {\n                try {\n                    reader.close();\n                } catch (IOException e) {\n                    log.warn(\"\u30d5\u30a1\u30a4\u30eb\u306e\u30af\u30ed\u30fc\u30ba\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n                }\n            }\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-36\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:#ffb36b;color:#FFF\" class=\"sgb-box-simple__title\">try-catch-finally\u30d6\u30ed\u30c3\u30af\u306e\u6ce8\u610f\u70b9<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:#ffb36b;background-color:#FFF\">\n<ol class=\"wp-block-list\"><div id=\"sgb-css-id-33\">\n<li>\u5177\u4f53\u7684\u306a\u4f8b\u5916\u304b\u3089\u9806\u306b\u30ad\u30e3\u30c3\u30c1\u3059\u308b<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-34\">\n<li>finally\u30d6\u30ed\u30c3\u30af\u306f\u5fc5\u305a\u5b9f\u884c\u3055\u308c\u308b<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-35\">\n<li>finally\u30d6\u30ed\u30c3\u30af\u5185\u3067\u3082\u4f8b\u5916\u51e6\u7406\u3092\u8003\u616e\u3059\u308b<\/li>\n<\/div>\n\n\n<li>\u4f8b\u5916\u3092\u9069\u5207\u306b\u30ed\u30b0\u51fa\u529b\u3059\u308b<\/li>\n<\/ol>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-37\">\n<p>\u3053\u306e\u3088\u3046\u306a\u57fa\u672c\u7684\u306a\u4f8b\u5916\u51e6\u7406\u306e\u7406\u89e3\u306f\u3001\u3088\u308a\u9ad8\u5ea6\u306a\u4f8b\u5916\u51e6\u7406\u30d1\u30bf\u30fc\u30f3\u3092\u5b66\u3076\u57fa\u790e\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-38\">\n<h2 class=\"wp-block-heading\" id=\"i-12\">\uff12\uff0e\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-39\">\n<h3 class=\"wp-block-heading\" id=\"i-13\">2.1 try-with-resources\u3092\u4f7f\u7528\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-40\">\n<p>Java 7\u3067\u5c0e\u5165\u3055\u308c\u305ftry-with-resources\u69cb\u6587\u306f\u3001AutoCloseable\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u306e\u81ea\u52d5\u30af\u30ed\u30fc\u30ba\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30ea\u30bd\u30fc\u30b9\u30ea\u30fc\u30af\u3092\u9632\u304e\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3082\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-41\">\n<h4 class=\"wp-block-heading\" id=\"i-14\">\u57fa\u672c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5f93\u6765\u306e\u65b9\u6cd5\nBufferedReader reader = null;\ntry {\n    reader = new BufferedReader(new FileReader(\"data.txt\"));\n    \/\/ \u51e6\u7406\n} finally {\n    if (reader != null) {\n        try {\n            reader.close();\n        } catch (IOException e) {\n            \/\/ \u30af\u30ed\u30fc\u30ba\u6642\u306e\u4f8b\u5916\u51e6\u7406\n        }\n    }\n}\n\n\/\/ try-with-resources\u3092\u4f7f\u7528\u3057\u305f\u65b9\u6cd5\ntry (BufferedReader reader = new BufferedReader(new FileReader(\"data.txt\"))) {\n    \/\/ \u51e6\u7406\n    \/\/ close\u306f\u81ea\u52d5\u7684\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\n}<\/pre>\n\n\n<div id=\"sgb-css-id-42\">\n<h4 class=\"wp-block-heading\" id=\"i-15\">\u8907\u6570\u30ea\u30bd\u30fc\u30b9\u306e\u7ba1\u7406<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public void processFiles(String inputPath, String outputPath) {\n    try (BufferedReader reader = new BufferedReader(new FileReader(inputPath));\n         BufferedWriter writer = new BufferedWriter(new FileWriter(outputPath))) {\n\n        String line;\n        while ((line = reader.readLine()) != null) {\n            writer.write(line);\n            writer.newLine();\n        }\n    } catch (IOException e) {\n        log.error(\"\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n        throw new BusinessException(\"\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-43\">\n<h3 class=\"wp-block-heading\" id=\"i-16\">2.2 \u30de\u30eb\u30c1\u30ad\u30e3\u30c3\u30c1\u306b\u3088\u308b\u52b9\u7387\u7684\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-44\">\n<p>Java 7\u4ee5\u964d\u3067\u306f\u3001\u8907\u6570\u306e\u4f8b\u5916\u30921\u3064\u306ecatch\u30d6\u30ed\u30c3\u30af\u3067\u51e6\u7406\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u306e\u91cd\u8907\u3092\u6e1b\u3089\u3057\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u3092\u5411\u4e0a\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-45\">\n<h4 class=\"wp-block-heading\" id=\"i-17\">\u30de\u30eb\u30c1\u30ad\u30e3\u30c3\u30c1\u306e\u5b9f\u88c5\u4f8b<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public void processData() {\n    try {\n        \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u51e6\u7406\u3068\u30d5\u30a1\u30a4\u30eb\u51e6\u7406\n        saveToDatabase();\n        writeToFile();\n    } catch (SQLException | IOException e) {\n        \/\/ \u8907\u6570\u306e\u4f8b\u5916\u3092\u540c\u3058\u3088\u3046\u306b\u51e6\u7406\n        log.error(\"\u30c7\u30fc\u30bf\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n        throw new SystemException(\"\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n    } catch (Exception e) {\n        \/\/ \u305d\u306e\u4ed6\u306e\u4f8b\u5916\u51e6\u7406\n        log.error(\"\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n        throw new UnexpectedSystemException(\"\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-46\">\n<h3 class=\"wp-block-heading\" id=\"i-18\">2.3 \u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30af\u30e9\u30b9\u306e\u8a2d\u8a08\u3068\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-47\">\n<p>\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u7279\u6709\u306e\u4f8b\u5916\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u6709\u52b9\u306a\u624b\u6bb5\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-48\">\n<h4 class=\"wp-block-heading\" id=\"i-19\">\u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30af\u30e9\u30b9\u306e\u57fa\u672c\u69cb\u9020<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class BusinessException extends Exception {\n    private final String errorCode;\n    private final ErrorSeverity severity;\n\n    public BusinessException(String message, String errorCode, ErrorSeverity severity) {\n        super(message);\n        this.errorCode = errorCode;\n        this.severity = severity;\n    }\n\n    public BusinessException(String message, String errorCode, ErrorSeverity severity, Throwable cause) {\n        super(message, cause);\n        this.errorCode = errorCode;\n        this.severity = severity;\n    }\n\n    public String getErrorCode() {\n        return errorCode;\n    }\n\n    public ErrorSeverity getSeverity() {\n        return severity;\n    }\n}\n\n\/\/ \u4f8b\u5916\u306e\u91cd\u8981\u5ea6\u3092\u8868\u3059\u5217\u6319\u578b\npublic enum ErrorSeverity {\n    INFO, WARNING, ERROR, CRITICAL\n}<\/pre>\n\n\n<div id=\"sgb-css-id-49\">\n<h4 class=\"wp-block-heading\" id=\"i-20\">\u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u306e\u4f7f\u7528\u4f8b<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class UserService {\n    public void registerUser(UserDto userDto) {\n        try {\n            validateUser(userDto);\n            \/\/ \u30e6\u30fc\u30b6\u30fc\u767b\u9332\u51e6\u7406\n        } catch (ValidationException e) {\n            throw new BusinessException(\n                \"\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u306b\u5931\u6557\u3057\u307e\u3057\u305f\",\n                \"ERR001\",\n                ErrorSeverity.WARNING,\n                e\n            );\n        } catch (DatabaseException e) {\n            throw new BusinessException(\n                \"\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\",\n                \"ERR002\",\n                ErrorSeverity.CRITICAL,\n                e\n            );\n        }\n    }\n\n    private void validateUser(UserDto userDto) throws ValidationException {\n        if (userDto.getEmail() == null || !userDto.getEmail().contains(\"@\")) {\n            throw new ValidationException(\"\u4e0d\u6b63\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u5f62\u5f0f\u3067\u3059\");\n        }\n        \/\/ \u305d\u306e\u4ed6\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-50\">\n<h4 class=\"wp-block-heading\" id=\"i-21\">\u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u8a2d\u8a08\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-51\">\n<p>\u30001. \u4f8b\u5916\u306e\u968e\u5c64\u69cb\u9020\u3092\u9069\u5207\u306b\u8a2d\u8a08\u3059\u308b<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \/\/ \u57fa\u5e95\u3068\u306a\u308b\u4f8b\u5916\u30af\u30e9\u30b9\n   public abstract class BaseException extends Exception {\n       \/\/ \u5171\u901a\u306e\u6a5f\u80fd\u3092\u5b9f\u88c5\n   }\n\n   \/\/ \u5177\u4f53\u7684\u306a\u4f8b\u5916\u30af\u30e9\u30b9\n   public class ValidationException extends BaseException {\n       \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u7279\u6709\u306e\u6a5f\u80fd\u3092\u8ffd\u52a0\n   }<\/pre>\n\n\n<div id=\"sgb-css-id-52\">\n<p>\u30002. \u610f\u5473\u306e\u3042\u308b\u60c5\u5831\u3092\u4ed8\u52a0\u3059\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-53\">\n<p>\u3000\u3000\u25cf \u30a8\u30e9\u30fc\u30b3\u30fc\u30c9<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-54\">\n<p>\u3000\u3000\u25cf \u91cd\u8981\u5ea6<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-55\">\n<p>\u3000\u3000\u25cf \u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-56\">\n<p>\u3000\u3000\u25cf \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3ID<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-57\">\n<p>\u30003. \u30ed\u30b0\u51fa\u529b\u3092\u8003\u616e\u3057\u305f\u8a2d\u8a08<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   public class LoggableException extends Exception {\n       public String getLoggableMessage() {\n           return String.format(\"[%s] %s - %s\",\n               getTimestamp(),\n               getErrorCode(),\n               getMessage());\n       }\n   }<\/pre>\n\n\n<div id=\"sgb-css-id-58\">\n<p>\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u5805\u7262\u306a\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-59\">\n<h2 class=\"wp-block-heading\" id=\"i-22\">\uff13\uff0e\u5b9f\u52d9\u3067\u5f79\u7acb\u3064\u4f8b\u5916\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-60\">\n<h3 class=\"wp-block-heading\" id=\"i-23\">3.1 \u9069\u5207\u306a\u7c92\u5ea6\u3067\u306e\u4f8b\u5916\u30ad\u30e3\u30c3\u30c1<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-61\">\n<p>\u4f8b\u5916\u51e6\u7406\u306e\u7c92\u5ea6\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4fdd\u5b88\u6027\u3068\u56de\u5fa9\u6027\u306b\u5927\u304d\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002\u9069\u5207\u306a\u7c92\u5ea6\u3067\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u7d30\u3084\u304b\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-62\">\n<h4 class=\"wp-block-heading\" id=\"i-24\">\u7c92\u5ea6\u5225\u306e\u4f8b\u5916\u51e6\u7406\u30d1\u30bf\u30fc\u30f3<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class OrderService {\n    \/\/ \u4e0d\u9069\u5207\u306a\u4f8b: \u7c92\u5ea6\u304c\u7c97\u3059\u304e\u308b\n    public void processOrder_Bad(Order order) {\n        try {\n            \/\/ \u5168\u3066\u306e\u51e6\u7406\u30921\u3064\u306etry\u30d6\u30ed\u30c3\u30af\u3067\u56f2\u3080\n            validateOrder(order);\n            calculateTotal(order);\n            checkInventory(order);\n            saveToDatabase(order);\n            sendConfirmationEmail(order);\n        } catch (Exception e) {\n            \/\/ \u5168\u3066\u306e\u4f8b\u5916\u3092\u540c\u3058\u3088\u3046\u306b\u51e6\u7406\n            log.error(\"\u6ce8\u6587\u51e6\u7406\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n            throw new OrderProcessingException(\"\u6ce8\u6587\u51e6\u7406\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n        }\n    }\n\n    \/\/ \u9069\u5207\u306a\u4f8b: \u51e6\u7406\u6bb5\u968e\u3054\u3068\u306e\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n    public void processOrder_Good(Order order) {\n        try {\n            validateOrder(order);\n        } catch (ValidationException e) {\n            log.warn(\"\u6ce8\u6587\u30c7\u30fc\u30bf\u304c\u4e0d\u6b63\u3067\u3059\", e);\n            throw new InvalidOrderException(\"\u6ce8\u6587\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\", e);\n        }\n\n        try {\n            calculateTotal(order);\n            checkInventory(order);\n        } catch (InventoryException e) {\n            log.error(\"\u5728\u5eab\u30c1\u30a7\u30c3\u30af\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n            throw new OrderProcessingException(\"\u5546\u54c1\u306e\u5728\u5eab\u304c\u4e0d\u8db3\u3057\u3066\u3044\u307e\u3059\", e);\n        } catch (CalculationException e) {\n            log.error(\"\u91d1\u984d\u8a08\u7b97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n            throw new OrderProcessingException(\"\u6ce8\u6587\u91d1\u984d\u306e\u8a08\u7b97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n        }\n\n        try {\n            saveToDatabase(order);\n        } catch (DatabaseException e) {\n            log.error(\"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n            throw new SystemException(\"\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n        }\n\n        try {\n            sendConfirmationEmail(order);\n        } catch (EmailException e) {\n            \/\/ \u30e1\u30fc\u30eb\u9001\u4fe1\u5931\u6557\u306f\u51e6\u7406\u7d9a\u884c\u53ef\u80fd\n            log.warn(\"\u78ba\u8a8d\u30e1\u30fc\u30eb\u306e\u9001\u4fe1\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-63\">\n<h3 class=\"wp-block-heading\" id=\"i-25\">3.2 \u610f\u5473\u306e\u3042\u308b\u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4f5c\u6210\u65b9\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-64\">\n<p>\u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u3001\u554f\u984c\u306e\u8a3a\u65ad\u3068\u89e3\u6c7a\u306b\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u30dd\u30a4\u30f3\u30c8\u3092\u8003\u616e\u3057\u3066\u3001\u610f\u5473\u306e\u3042\u308b\u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-65\">\n<h4 class=\"wp-block-heading\" id=\"i-26\">\u52b9\u679c\u7684\u306a\u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8981\u7d20<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-66\">\n<p>\u30001. \u30a8\u30e9\u30fc\u306e\u767a\u751f\u5834\u6240<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-67\">\n<p>\u30002. \u30a8\u30e9\u30fc\u306e\u539f\u56e0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-68\">\n<p>\u30003. \u671f\u5f85\u3055\u308c\u308b\u72b6\u614b\u3068\u5b9f\u969b\u306e\u72b6\u614b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-69\">\n<p>\u30004. \u53ef\u80fd\u306a\u89e3\u6c7a\u7b56<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ValidationUtil {\n    public static void validateAge(int age) {\n        \/\/ \u4e0d\u9069\u5207\u306a\u4f8b\n        if (age &lt; 0) {\n            throw new IllegalArgumentException(\"Invalid age\");\n        }\n\n        \/\/ \u9069\u5207\u306a\u4f8b\n        if (age &lt; 0) {\n            throw new IllegalArgumentException(\n                String.format(\"\u5e74\u9f62\u306f0\u4ee5\u4e0a\u306e\u5024\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6307\u5b9a\u3055\u308c\u305f\u5024: %d\", age)\n            );\n        }\n    }\n\n    public static void validateEmail(String email) {\n        if (email == null || !email.matches(\"^[A-Za-z0-9+_.-]+@(.+)$\")) {\n            throw new ValidationException(\n                String.format(\"\u4e0d\u6b63\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u5f62\u5f0f\u3067\u3059\u3002[%s] \" +\n                    \"\u6b63\u3057\u3044\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u5f62\u5f0f\uff08\u4f8b\uff1aexample@domain.com\uff09\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n                    email)\n            );\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-70\">\n<h3 class=\"wp-block-heading\" id=\"i-27\">3.3 \u4f8b\u5916\u306e\u30e9\u30c3\u30d7\u3068\u518d\u30b9\u30ed\u30fc\u6226\u7565<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-71\">\n<p>\u4e0b\u4f4d\u30ec\u30a4\u30e4\u30fc\u306e\u4f8b\u5916\u3092\u4e0a\u4f4d\u30ec\u30a4\u30e4\u30fc\u306b\u4f1d\u64ad\u3055\u305b\u308b\u969b\u306f\u3001\u9069\u5207\u306a\u30e9\u30c3\u30d7\u3068\u518d\u30b9\u30ed\u30fc\u3092\u884c\u3046\u3053\u3068\u3067\u3001\u3088\u308a\u610f\u5473\u306e\u3042\u308b\u4f8b\u5916\u60c5\u5831\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-72\">\n<h4 class=\"wp-block-heading\" id=\"i-28\">\u4f8b\u5916\u30e9\u30c3\u30d7\u306e\u5b9f\u88c5\u4f8b<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class UserRepository {\n    public User findById(Long userId) {\n        try {\n            return jdbcTemplate.queryForObject(\n                \"SELECT * FROM users WHERE id = ?\",\n                new Object[]{userId},\n                userRowMapper\n            );\n        } catch (DataAccessException e) {\n            \/\/ \u6280\u8853\u7684\u306a\u4f8b\u5916\u3092\u30d3\u30b8\u30cd\u30b9\u4f8b\u5916\u306b\u5909\u63db\n            throw new UserNotFoundException(\n                String.format(\"ID: %d\u306e\u30e6\u30fc\u30b6\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\", userId),\n                e\n            );\n        } catch (SQLException e) {\n            \/\/ SQLException\u3092\u30b7\u30b9\u30c6\u30e0\u4f8b\u5916\u306b\u30e9\u30c3\u30d7\n            throw new SystemException(\n                \"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\",\n                \"DB_ERROR\",\n                e\n            );\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-73\">\n<h4 class=\"wp-block-heading\" id=\"i-29\">\u52b9\u679c\u7684\u306a\u4f8b\u5916\u30c1\u30a7\u30fc\u30f3\u306e\u4f5c\u6210<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class OrderManager {\n    public void processOrder(OrderRequest request) {\n        try {\n            \/\/ \u6ce8\u6587\u51e6\u7406\n            Order order = createOrder(request);\n            validateOrder(order);\n            saveOrder(order);\n        } catch (ValidationException e) {\n            \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u4f8b\u5916\u306f\u5909\u63db\u305b\u305a\u306b\u518d\u30b9\u30ed\u30fc\n            throw e;\n        } catch (DatabaseException e) {\n            \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f8b\u5916\u3092\u30d3\u30b8\u30cd\u30b9\u4f8b\u5916\u306b\u5909\u63db\n            throw new OrderProcessingException(\n                \"\u6ce8\u6587\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f\",\n                \"ORD001\",\n                ErrorSeverity.ERROR,\n                e\n            );\n        } catch (Exception e) {\n            \/\/ \u4e88\u671f\u305b\u306c\u4f8b\u5916\u3092\u30b7\u30b9\u30c6\u30e0\u4f8b\u5916\u306b\u30e9\u30c3\u30d7\n            throw new UnexpectedSystemException(\n                \"\u6ce8\u6587\u51e6\u7406\u4e2d\u306b\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\",\n                \"SYS001\",\n                e\n            );\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-77\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u4f8b\u5916\u30e9\u30c3\u30d7\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ol class=\"wp-block-list\"><div id=\"sgb-css-id-74\">\n<li>\u539f\u56e0\u3068\u306a\u3063\u305f\u4f8b\u5916\u3092\u5fc5\u305a\u542b\u3081\u308b\uff08cause\uff09<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-75\">\n<li>\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3092\u4fdd\u6301\u3059\u308b<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-76\">\n<li>\u610f\u5473\u306e\u3042\u308b\u8ffd\u52a0\u60c5\u5831\u3092\u4ed8\u52a0\u3059\u308b<\/li>\n<\/div>\n\n\n<li>\u9069\u5207\u306a\u4f8b\u5916\u968e\u5c64\u3092\u7dad\u6301\u3059\u308b<\/li>\n<\/ol>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-78\">\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u5b9f\u8df5\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u3001\u30c7\u30d0\u30c3\u30b0\u3057\u3084\u3059\u3044\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-79\">\n<h2 class=\"wp-block-heading\" id=\"i-30\">\uff14\uff0e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u8a08\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-80\">\n<h3 class=\"wp-block-heading\" id=\"i-31\">4.1 \u30ec\u30a4\u30e4\u30fc\u5225\u306e\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u6226\u7565<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-81\">\n<p>\u30de\u30eb\u30c1\u30ec\u30a4\u30e4\u30fc\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u304a\u3044\u3066\u3001\u5404\u30ec\u30a4\u30e4\u30fc\u3067\u306e\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u6226\u7565\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4fdd\u5b88\u6027\u3068\u62e1\u5f35\u6027\u3092\u9ad8\u3081\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-82\">\n<h4 class=\"wp-block-heading\" id=\"i-32\">\u30ec\u30a4\u30e4\u30fc\u5225\u306e\u4f8b\u5916\u51e6\u7406\u65b9\u91dd<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Presentation\u30ec\u30a4\u30e4\u30fc\uff08Controller\uff09\n@RestController\npublic class UserController {\n    @PostMapping(\"\/users\")\n    public ResponseEntity&lt;UserResponse&gt; createUser(@RequestBody UserRequest request) {\n        try {\n            UserResponse response = userService.createUser(request);\n            return ResponseEntity.ok(response);\n        } catch (ValidationException e) {\n            \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc\u306f400\u30a8\u30e9\u30fc\u3068\u3057\u3066\u8fd4\u5374\n            return ResponseEntity.badRequest()\n                .body(new ErrorResponse(e.getMessage()));\n        } catch (BusinessException e) {\n            \/\/ \u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u30a8\u30e9\u30fc\u306f409\u30a8\u30e9\u30fc\u3068\u3057\u3066\u8fd4\u5374\n            return ResponseEntity.status(HttpStatus.CONFLICT)\n                .body(new ErrorResponse(e.getMessage()));\n        }\n    }\n}\n\n\/\/ Business\u30ec\u30a4\u30e4\u30fc\uff08Service\uff09\n@Service\npublic class UserService {\n    public UserResponse createUser(UserRequest request) {\n        try {\n            validateUserRequest(request);\n            User user = userRepository.save(convertToEntity(request));\n            return convertToResponse(user);\n        } catch (DataAccessException e) {\n            \/\/ \u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u306e\u4f8b\u5916\u3092\u30d3\u30b8\u30cd\u30b9\u4f8b\u5916\u306b\u5909\u63db\n            throw new BusinessException(\"\u30e6\u30fc\u30b6\u30fc\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n        }\n    }\n}\n\n\/\/ Infrastructure\u30ec\u30a4\u30e4\u30fc\uff08Repository\uff09\n@Repository\npublic class UserRepository {\n    public User save(User user) {\n        try {\n            return entityManager.persist(user);\n        } catch (PersistenceException e) {\n            \/\/ \u6c38\u7d9a\u5316\u5c64\u306e\u4f8b\u5916\u3092Repository\u5c64\u306e\u4f8b\u5916\u306b\u5909\u63db\n            throw new DataAccessException(\"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-83\">\n<h3 class=\"wp-block-heading\" id=\"i-33\">4.2 \u30ed\u30b0\u51fa\u529b\u3092\u8003\u616e\u3057\u305f\u4f8b\u5916\u8a2d\u8a08<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-84\">\n<p>\u52b9\u679c\u7684\u306a\u30ed\u30b0\u51fa\u529b\u306f\u3001\u554f\u984c\u306e\u65e9\u671f\u767a\u898b\u3068\u89e3\u6c7a\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u4f8b\u5916\u51e6\u7406\u3068\u30ed\u30b0\u51fa\u529b\u3092\u7d71\u5408\u7684\u306b\u8a2d\u8a08\u3059\u308b\u3053\u3068\u3067\u3001\u904b\u7528\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-85\">\n<h4 class=\"wp-block-heading\" id=\"i-34\">\u30ed\u30b0\u30ec\u30d9\u30eb\u306e\u4f7f\u3044\u5206\u3051<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class OrderService {\n    private static final Logger log = LoggerFactory.getLogger(OrderService.class);\n\n    public Order processOrder(OrderRequest request) {\n        \/\/ DEBUG\u30ec\u30d9\u30eb\uff1a\u8a73\u7d30\u306a\u51e6\u7406\u306e\u958b\u59cb\u30fb\u7d42\u4e86\n        log.debug(\"\u6ce8\u6587\u51e6\u7406\u958b\u59cb: {}\", request.getOrderId());\n\n        try {\n            validateOrder(request);\n\n            \/\/ INFO\u30ec\u30d9\u30eb\uff1a\u91cd\u8981\u306a\u696d\u52d9\u30a4\u30d9\u30f3\u30c8\n            log.info(\"\u6ce8\u6587\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u6210\u529f: {}\", request.getOrderId());\n\n            Order order = createOrder(request);\n\n            \/\/ INFO\u30ec\u30d9\u30eb\uff1a\u51e6\u7406\u306e\u6210\u529f\n            log.info(\"\u6ce8\u6587\u4f5c\u6210\u6210\u529f: {}\", order.getId());\n\n            return order;\n\n        } catch (ValidationException e) {\n            \/\/ WARN\u30ec\u30d9\u30eb\uff1a\u60f3\u5b9a\u5185\u306e\u30a8\u30e9\u30fc\n            log.warn(\"\u6ce8\u6587\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc: {} - {}\", \n                request.getOrderId(), e.getMessage());\n            throw e;\n\n        } catch (Exception e) {\n            \/\/ ERROR\u30ec\u30d9\u30eb\uff1a\u60f3\u5b9a\u5916\u306e\u30a8\u30e9\u30fc\n            log.error(\"\u6ce8\u6587\u51e6\u7406\u4e2d\u306b\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f: {} - {}\", \n                request.getOrderId(), e.getMessage(), e);\n            throw new SystemException(\"\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-86\">\n<h4 class=\"wp-block-heading\" id=\"i-35\">\u69cb\u9020\u5316\u30ed\u30b0\u51fa\u529b\u306e\u5b9f\u88c5<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class LoggingAspect {\n    private static final Logger log = LoggerFactory.getLogger(LoggingAspect.class);\n\n    @Around(\"execution(* com.example.service.*.*(..))\")\n    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {\n        \/\/ \u30e1\u30bd\u30c3\u30c9\u5b9f\u884c\u524d\u306e\u30ed\u30b0\n        LogContext context = new LogContext()\n            .setMethod(joinPoint.getSignature().getName())\n            .setArgs(joinPoint.getArgs())\n            .setStartTime(System.currentTimeMillis());\n\n        try {\n            Object result = joinPoint.proceed();\n            \/\/ \u6b63\u5e38\u7d42\u4e86\u6642\u306e\u30ed\u30b0\n            context.setEndTime(System.currentTimeMillis())\n                   .setStatus(\"SUCCESS\");\n            log.info(\"{}\", context);\n            return result;\n        } catch (Exception e) {\n            \/\/ \u7570\u5e38\u7d42\u4e86\u6642\u306e\u30ed\u30b0\n            context.setEndTime(System.currentTimeMillis())\n                   .setStatus(\"ERROR\")\n                   .setException(e);\n            log.error(\"{}\", context);\n            throw e;\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-87\">\n<h3 class=\"wp-block-heading\" id=\"i-36\">4.3 \u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u3092\u9ad8\u3081\u308b\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-88\">\n<p>\u4f8b\u5916\u51e6\u7406\u306e\u30c6\u30b9\u30c8\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u54c1\u8cea\u3092\u4fdd\u8a3c\u3059\u308b\u91cd\u8981\u306a\u8981\u7d20\u3067\u3059\u3002\u30c6\u30b9\u30bf\u30d3\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5\u3092\u5fc3\u304c\u3051\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-89\">\n<h4 class=\"wp-block-heading\" id=\"i-37\">\u30c6\u30b9\u30c8\u5bb9\u6613\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class UserService {\n    private final UserRepository userRepository;\n    private final ValidationService validationService;\n\n    \/\/ \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u3067\u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u3092\u78ba\u4fdd\n    public UserService(UserRepository userRepository, \n                      ValidationService validationService) {\n        this.userRepository = userRepository;\n        this.validationService = validationService;\n    }\n\n    public User createUser(UserRequest request) {\n        \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u5206\u96e2\u3057\u3066\u30c6\u30b9\u30c8\u53ef\u80fd\u306b\n        ValidationResult result = validationService.validate(request);\n        if (!result.isValid()) {\n            throw new ValidationException(result.getErrors());\n        }\n\n        try {\n            return userRepository.save(convertToEntity(request));\n        } catch (DataAccessException e) {\n            throw new BusinessException(\"\u30e6\u30fc\u30b6\u30fc\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n        }\n    }\n}\n\n\/\/ \u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\n@Test\npublic void createUser_ValidationError_ThrowsException() {\n    \/\/ \u30e2\u30c3\u30af\u306e\u6e96\u5099\n    UserRepository mockRepo = mock(UserRepository.class);\n    ValidationService mockValidation = mock(ValidationService.class);\n    UserService service = new UserService(mockRepo, mockValidation);\n\n    \/\/ \u30c6\u30b9\u30c8\u30c7\u30fc\u30bf\n    UserRequest request = new UserRequest(\"test@example.com\");\n    ValidationResult invalidResult = new ValidationResult(false, \n        Arrays.asList(\"Invalid email\"));\n\n    \/\/ \u30e2\u30c3\u30af\u306e\u632f\u308b\u821e\u3044\u3092\u8a2d\u5b9a\n    when(mockValidation.validate(request)).thenReturn(invalidResult);\n\n    \/\/ \u4f8b\u5916\u767a\u751f\u306e\u691c\u8a3c\n    assertThrows(ValidationException.class, \n        () -&gt; service.createUser(request));\n}<\/pre>\n\n\n<div id=\"sgb-css-id-90\">\n<p>\u3053\u308c\u3089\u306e\u8a2d\u8a08\u30d1\u30bf\u30fc\u30f3\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u30c6\u30b9\u30c8\u3057\u3084\u3059\u3044\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-91\">\n<h2 class=\"wp-block-heading\" id=\"i-38\">\uff15\uff0e\u3088\u304f\u3042\u308b\u5b9f\u88c5\u30df\u30b9\u3068\u6539\u5584\u65b9\u6cd5<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-92\">\n<h3 class=\"wp-block-heading\" id=\"i-39\">5.1 \u7a7a\u306ecatch\u30d6\u30ed\u30c3\u30af\u304c\u5f15\u304d\u8d77\u3053\u3059\u554f\u984c<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-93\">\n<p>\u7a7a\u306ecatch\u30d6\u30ed\u30c3\u30af\u306f\u3001\u30a8\u30e9\u30fc\u3092\u96a0\u853d\u3057\u3001\u554f\u984c\u306e\u8ffd\u8de1\u3092\u56f0\u96e3\u306b\u3059\u308b\u6700\u3082\u4e00\u822c\u7684\u306a\u5b9f\u88c5\u30df\u30b9\u306e1\u3064\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-94\">\n<h4 class=\"wp-block-heading\" id=\"i-40\">\u554f\u984c\u306e\u3042\u308b\u5b9f\u88c5\u4f8b<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u60aa\u3044\u4f8b\uff1a\u7a7a\u306ecatch\u30d6\u30ed\u30c3\u30af\npublic void processFile(String path) {\n    try {\n        Files.delete(Paths.get(path));\n    } catch (IOException e) {\n        \/\/ \u4f55\u3082\u3057\u306a\u3044 - \u5371\u967a\u306a\u5b9f\u88c5\n    }\n}\n\n\/\/ \u6539\u5584\u4f8b1\uff1a\u6700\u4f4e\u9650\u306e\u30ed\u30b0\u51fa\u529b\npublic void processFile(String path) {\n    try {\n        Files.delete(Paths.get(path));\n    } catch (IOException e) {\n        log.error(\"\u30d5\u30a1\u30a4\u30eb\u524a\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \" + path, e);\n        throw new SystemException(\"\u30d5\u30a1\u30a4\u30eb\u64cd\u4f5c\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n    }\n}\n\n\/\/ \u6539\u5584\u4f8b2\uff1a\u4ee3\u66ff\u51e6\u7406\u306e\u5b9f\u88c5\npublic void processFile(String path) {\n    try {\n        Files.delete(Paths.get(path));\n    } catch (IOException e) {\n        log.warn(\"\u901a\u5e38\u306e\u524a\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u5f37\u5236\u524a\u9664\u3092\u8a66\u307f\u307e\u3059: \" + path, e);\n        try {\n            File file = new File(path);\n            if (!file.delete()) {\n                log.error(\"\u5f37\u5236\u524a\u9664\u3082\u5931\u6557\u3057\u307e\u3057\u305f: \" + path);\n                throw new SystemException(\"\u30d5\u30a1\u30a4\u30eb\u524a\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n            }\n        } catch (SecurityException se) {\n            throw new SystemException(\"\u30d5\u30a1\u30a4\u30eb\u524a\u9664\u306e\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093\", se);\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-95\">\n<h3 class=\"wp-block-heading\" id=\"i-41\">5.2 \u4f8b\u5916\u3092\u7121\u8996\u3059\u308b\u3053\u3068\u306e\u5371\u967a\u6027<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-96\">\n<p>\u4f8b\u5916\u3092\u7121\u8996\u3059\u308b\u3053\u3068\u306f\u3001\u91cd\u5927\u306a\u554f\u984c\u3092\u898b\u843d\u3068\u3059\u539f\u56e0\u3068\u306a\u308a\u3001\u30b7\u30b9\u30c6\u30e0\u306e\u4fe1\u983c\u6027\u3092\u640d\u306a\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-97\">\n<h4 class=\"wp-block-heading\" id=\"i-42\">\u5371\u967a\u306a\u4f8b\u5916\u7121\u8996\u306e\u30d1\u30bf\u30fc\u30f3<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u5371\u967a\u306a\u5b9f\u88c5\uff1a\u4f8b\u5916\u3092\u63e1\u308a\u3064\u3076\u3059\npublic class ConnectionManager {\n    private static Connection connection;\n\n    \/\/ \u554f\u984c\u306e\u3042\u308b\u5b9f\u88c5\n    public static void closeQuietly() {\n        try {\n            if (connection != null) {\n                connection.close();\n            }\n        } catch (SQLException e) {\n            \/\/ \u5371\u967a\uff1a\u63a5\u7d9a\u304c\u6b63\u3057\u304f\u9589\u3058\u3089\u308c\u306a\u3044\u53ef\u80fd\u6027\u3092\u7121\u8996\n        }\n    }\n\n    \/\/ \u6539\u5584\u3055\u308c\u305f\u5b9f\u88c5\n    public static void close() throws SQLException {\n        if (connection != null) {\n            try {\n                connection.close();\n            } catch (SQLException e) {\n                log.error(\"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u306e\u30af\u30ed\u30fc\u30ba\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n                throw e; \/\/ \u4e0a\u4f4d\u5c64\u306b\u554f\u984c\u3092\u901a\u77e5\n            } finally {\n                connection = null; \/\/ \u30ea\u30bd\u30fc\u30b9\u306e\u89e3\u653e\u3092\u78ba\u5b9f\u306b\n            }\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-98\">\n<h3 class=\"wp-block-heading\" id=\"i-43\">5.3 \u904e\u5270\u306a\u4f8b\u5916\u30ad\u30e3\u30c3\u30c1\u3092\u907f\u3051\u308b\u65b9\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-99\">\n<p>\u5fc5\u8981\u4ee5\u4e0a\u306b\u5e83\u7bc4\u56f2\u306a\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u3053\u3068\u306f\u3001\u30a8\u30e9\u30fc\u306e\u9069\u5207\u306a\u51e6\u7406\u3092\u59a8\u3052\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-100\">\n<h4 class=\"wp-block-heading\" id=\"i-44\">\u9069\u5207\u306a\u4f8b\u5916\u30ad\u30e3\u30c3\u30c1\u306e\u4f8b<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u4e0d\u9069\u5207\u306a\u5b9f\u88c5\uff1a\u904e\u5270\u306a\u4f8b\u5916\u30ad\u30e3\u30c3\u30c1\npublic class UserService {\n    public void registerUser(UserDto dto) {\n        try {\n            \/\/ \u69d8\u3005\u306a\u51e6\u7406\n            validateUser(dto);\n            saveUser(dto);\n            sendWelcomeEmail(dto);\n        } catch (Exception e) {  \/\/ \u5168\u3066\u306e\u4f8b\u5916\u3092\u540c\u3058\u3088\u3046\u306b\u51e6\u7406\n            log.error(\"\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u30a8\u30e9\u30fc\", e);\n            throw new SystemException(\"\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\");\n        }\n    }\n\n    \/\/ \u6539\u5584\u3055\u308c\u305f\u5b9f\u88c5\uff1a\u9069\u5207\u306a\u7c92\u5ea6\u3067\u306e\u4f8b\u5916\u51e6\u7406\n    public void registerUser(UserDto dto) {\n        \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\n        try {\n            validateUser(dto);\n        } catch (ValidationException e) {\n            log.warn(\"\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u304c\u4e0d\u6b63\u3067\u3059\", e);\n            throw new InvalidUserDataException(\"\u5165\u529b\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\", e);\n        }\n\n        \/\/ \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4fdd\u5b58\n        try {\n            saveUser(dto);\n        } catch (DataAccessException e) {\n            log.error(\"\u30e6\u30fc\u30b6\u30fc\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n            throw new SystemException(\"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n        }\n\n        \/\/ \u30e1\u30fc\u30eb\u9001\u4fe1\uff08\u975e\u30af\u30ea\u30c6\u30a3\u30ab\u30eb\u306a\u51e6\u7406\uff09\n        try {\n            sendWelcomeEmail(dto);\n        } catch (EmailException e) {\n            \/\/ \u30e1\u30fc\u30eb\u9001\u4fe1\u5931\u6557\u306f\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u51e6\u7406\u3092\u4e2d\u65ad\u3057\u306a\u3044\n            log.warn(\"\u30a6\u30a7\u30eb\u30ab\u30e0\u30e1\u30fc\u30eb\u306e\u9001\u4fe1\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-101\">\n<h4 class=\"wp-block-heading\" id=\"i-45\">\u4f8b\u5916\u51e6\u7406\u6539\u5584\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-102\">\n<p>\u30001. \u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u57fa\u672c\u539f\u5247<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-103\">\n<p>\u3000\u3000\u25cf \u7a7a\u306ecatch\u30d6\u30ed\u30c3\u30af\u3092\u4f5c\u3089\u306a\u3044<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-104\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u30ed\u30b0\u51fa\u529b\u3092\u884c\u3046<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-105\">\n<p>\u3000\u3000\u25cf \u4f8b\u5916\u3092\u9069\u5207\u306a\u7c92\u5ea6\u3067\u30ad\u30e3\u30c3\u30c1\u3059\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-106\">\n<p>\u3000\u3000\u25cf \u4f8b\u5916\u3092\u610f\u56f3\u7684\u306b\u7121\u8996\u3059\u308b\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u3067\u7406\u7531\u3092\u660e\u8a18\u3059\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-107\">\n<p>\u30002. \u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u3067\u306e\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-108\">\n<p>\u3000\u3000\u25cf \u4f8b\u5916\u304c\u30ed\u30b0\u306b\u9069\u5207\u306b\u8a18\u9332\u3055\u308c\u3066\u3044\u308b\u304b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-109\">\n<p>\u3000\u3000\u25cf \u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u304c\u4fdd\u6301\u3055\u308c\u3066\u3044\u308b\u304b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-110\">\n<p>\u3000\u3000\u25cf \u4f8b\u5916\u306e\u5909\u63db\u304c\u9069\u5207\u306b\u884c\u308f\u308c\u3066\u3044\u308b\u304b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-111\">\n<p>\u3000\u3000\u25cf \u30ea\u30bd\u30fc\u30b9\u304c\u78ba\u5b9f\u306b\u89e3\u653e\u3055\u308c\u3066\u3044\u308b\u304b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-112\">\n<p>\u30003. \u6539\u5584\u306e\u305f\u3081\u306e\u5177\u4f53\u7684\u306a\u30a2\u30af\u30b7\u30e7\u30f3<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-113\">\n<p>\u3000\u3000\u25cf \u7a7a\u306ecatch\u30d6\u30ed\u30c3\u30af\u306e\u64b2\u6ec5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-114\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u30ed\u30b0\u30ec\u30d9\u30eb\u306e\u4f7f\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-115\">\n<p>\u3000\u3000\u25cf \u4f8b\u5916\u51e6\u7406\u306e\u8cac\u4efb\u7bc4\u56f2\u306e\u660e\u78ba\u5316<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-116\">\n<p>\u3000\u3000\u25cf \u30c6\u30b9\u30c8\u53ef\u80fd\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-117\">\n<p>\u3053\u308c\u3089\u306e\u554f\u984c\u3092\u8a8d\u8b58\u3057\u3001\u9069\u5207\u306b\u5bfe\u51e6\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-118\">\n<h2 class=\"wp-block-heading\" id=\"i-46\">\uff16\uff0eSpring Framework\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-119\">\n<h3 class=\"wp-block-heading\" id=\"i-47\">6.1 @ExceptionHandler\u306e\u52b9\u679c\u7684\u306a\u4f7f\u3044\u65b9<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-120\">\n<p>Spring MVC\u3067\u306f\u3001<code>@ExceptionHandler<\/code>\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30ec\u30d9\u30eb\u3084\u30b0\u30ed\u30fc\u30d0\u30eb\u30ec\u30d9\u30eb\u3067\u4f8b\u5916\u51e6\u7406\u3092\u4e00\u5143\u5316\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-121\">\n<h4 class=\"wp-block-heading\" id=\"i-48\">\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30ec\u30d9\u30eb\u306e\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@RestController\n@RequestMapping(\"\/api\/users\")\npublic class UserController {\n\n    \/\/ \u500b\u5225\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u5185\u3067\u306e\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n    @ExceptionHandler(UserNotFoundException.class)\n    @ResponseStatus(HttpStatus.NOT_FOUND)\n    public ErrorResponse handleUserNotFound(UserNotFoundException ex) {\n        return new ErrorResponse(\n            \"USER_NOT_FOUND\",\n            ex.getMessage(),\n            HttpStatus.NOT_FOUND.value()\n        );\n    }\n\n    @ExceptionHandler(ValidationException.class)\n    @ResponseStatus(HttpStatus.BAD_REQUEST)\n    public ErrorResponse handleValidation(ValidationException ex) {\n        return new ErrorResponse(\n            \"VALIDATION_ERROR\",\n            ex.getMessage(),\n            HttpStatus.BAD_REQUEST.value()\n        );\n    }\n\n    @GetMapping(\"\/{id}\")\n    public UserResponse getUser(@PathVariable Long id) {\n        return userService.findById(id)\n            .orElseThrow(() -&gt; new UserNotFoundException(\n                String.format(\"\u30e6\u30fc\u30b6\u30fcID %d \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\", id)\n            ));\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-122\">\n<h3 class=\"wp-block-heading\" id=\"i-49\">6.2 ResponseEntity\u3092\u4f7f\u7528\u3057\u305f\u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u8a2d\u8a08<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-123\">\n<p>API\u306e\u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9\u306f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u9069\u5207\u306b\u51e6\u7406\u3067\u304d\u308b\u3088\u3046\u3001\u4e00\u8cab\u6027\u306e\u3042\u308b\u5f62\u5f0f\u3067\u8a2d\u8a08\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-124\">\n<h4 class=\"wp-block-heading\" id=\"i-50\">\u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u6a19\u6e96\u5316<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9\u306eDTO\n@Getter\n@AllArgsConstructor\npublic class ErrorResponse {\n    private final String code;\n    private final String message;\n    private final int status;\n    private final LocalDateTime timestamp;\n    private final List&lt;String&gt; details;\n\n    \/\/ \u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u30e1\u30bd\u30c3\u30c9\n    public static ErrorResponse of(String code, String message, \n                                 HttpStatus status, List&lt;String&gt; details) {\n        return new ErrorResponse(\n            code,\n            message,\n            status.value(),\n            LocalDateTime.now(),\n            details\n        );\n    }\n}\n\n\/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc\u306e\u8a73\u7d30\u60c5\u5831\n@Getter\n@AllArgsConstructor\npublic class ValidationErrorDetail {\n    private final String field;\n    private final Object rejectedValue;\n    private final String message;\n}\n\n\/\/ ResponseEntity\u3092\u4f7f\u7528\u3057\u305f\u30ec\u30b9\u30dd\u30f3\u30b9\u751f\u6210\n@ExceptionHandler(MethodArgumentNotValidException.class)\npublic ResponseEntity&lt;ErrorResponse&gt; handleValidationErrors(\n        MethodArgumentNotValidException ex) {\n\n    List&lt;String&gt; details = ex.getBindingResult()\n        .getFieldErrors()\n        .stream()\n        .map(error -&gt; String.format(\n            \"\u30d5\u30a3\u30fc\u30eb\u30c9 '%s' \u306e\u5024 '%s' \u304c\u4e0d\u6b63\u3067\u3059: %s\",\n            error.getField(),\n            error.getRejectedValue(),\n            error.getDefaultMessage()\n        ))\n        .collect(Collectors.toList());\n\n    ErrorResponse error = ErrorResponse.of(\n        \"VALIDATION_ERROR\",\n        \"\u5165\u529b\u5024\u304c\u4e0d\u6b63\u3067\u3059\",\n        HttpStatus.BAD_REQUEST,\n        details\n    );\n\n    return ResponseEntity\n        .status(HttpStatus.BAD_REQUEST)\n        .body(error);\n}<\/pre>\n\n\n<div id=\"sgb-css-id-125\">\n<h3 class=\"wp-block-heading\" id=\"i-51\">6.3 \u30b0\u30ed\u30fc\u30d0\u30eb\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u30fc\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-126\">\n<p><code>@ControllerAdvice<\/code>\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u4e00\u8cab\u3057\u305f\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-127\">\n<h4 class=\"wp-block-heading\" id=\"i-52\">\u30b0\u30ed\u30fc\u30d0\u30eb\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u30fc\u306e\u5b9f\u88c5<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@ControllerAdvice\npublic class GlobalExceptionHandler extends ResponseEntityExceptionHandler {\n\n    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);\n\n    \/\/ \u30d3\u30b8\u30cd\u30b9\u4f8b\u5916\u306e\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n    @ExceptionHandler(BusinessException.class)\n    public ResponseEntity&lt;ErrorResponse&gt; handleBusinessException(\n            BusinessException ex, WebRequest request) {\n\n        log.warn(\"\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", ex);\n\n        ErrorResponse error = ErrorResponse.of(\n            ex.getErrorCode(),\n            ex.getMessage(),\n            HttpStatus.CONFLICT,\n            Collections.singletonList(ex.getDetail())\n        );\n\n        return ResponseEntity\n            .status(HttpStatus.CONFLICT)\n            .body(error);\n    }\n\n    \/\/ \u30b7\u30b9\u30c6\u30e0\u4f8b\u5916\u306e\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n    @ExceptionHandler(SystemException.class)\n    public ResponseEntity&lt;ErrorResponse&gt; handleSystemException(\n            SystemException ex, WebRequest request) {\n\n        log.error(\"\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", ex);\n\n        ErrorResponse error = ErrorResponse.of(\n            \"SYSTEM_ERROR\",\n            \"\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\",\n            HttpStatus.INTERNAL_SERVER_ERROR,\n            Collections.emptyList()  \/\/ \u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u306e\u8a73\u7d30\u306f\u5916\u90e8\u306b\u516c\u958b\u3057\u306a\u3044\n        );\n\n        return ResponseEntity\n            .status(HttpStatus.INTERNAL_SERVER_ERROR)\n            .body(error);\n    }\n\n    \/\/ \u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u4f8b\u5916\u306e\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n    @Override\n    protected ResponseEntity&lt;Object&gt; handleMethodArgumentNotValid(\n            MethodArgumentNotValidException ex,\n            HttpHeaders headers,\n            HttpStatusCode status,\n            WebRequest request) {\n\n        List&lt;ValidationErrorDetail&gt; validationErrors = ex.getBindingResult()\n            .getFieldErrors()\n            .stream()\n            .map(error -&gt; new ValidationErrorDetail(\n                error.getField(),\n                error.getRejectedValue(),\n                error.getDefaultMessage()\n            ))\n            .collect(Collectors.toList());\n\n        ErrorResponse error = ErrorResponse.of(\n            \"VALIDATION_ERROR\",\n            \"\u5165\u529b\u5024\u304c\u4e0d\u6b63\u3067\u3059\",\n            HttpStatus.BAD_REQUEST,\n            validationErrors.stream()\n                .map(Object::toString)\n                .collect(Collectors.toList())\n        );\n\n        return ResponseEntity\n            .status(HttpStatus.BAD_REQUEST)\n            .body(error);\n    }\n\n    \/\/ \u4e88\u671f\u305b\u306c\u4f8b\u5916\u306e\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\n    @ExceptionHandler(Exception.class)\n    public ResponseEntity&lt;ErrorResponse&gt; handleAllUncaughtException(\n            Exception ex, WebRequest request) {\n\n        log.error(\"\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", ex);\n\n        ErrorResponse error = ErrorResponse.of(\n            \"UNEXPECTED_ERROR\",\n            \"\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\",\n            HttpStatus.INTERNAL_SERVER_ERROR,\n            Collections.emptyList()\n        );\n\n        return ResponseEntity\n            .status(HttpStatus.INTERNAL_SERVER_ERROR)\n            .body(error);\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-128\">\n<p>\u3053\u306e\u3088\u3046\u306b\u3001Spring Framework\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u4f53\u7cfb\u7684\u3067\u4e00\u8cab\u6027\u306e\u3042\u308b\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-129\">\n<h2 class=\"wp-block-heading\" id=\"i-53\">\uff17\uff0e\u5b9f\u8df5\u7684\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-130\">\n<h3 class=\"wp-block-heading\" id=\"i-54\">7.1 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u6642\u306e\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-131\">\n<p>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u3067\u306f\u3001\u69d8\u3005\u306a\u4f8b\u5916\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u7ba1\u7406\u3068\u7d44\u307f\u5408\u308f\u305b\u305f\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-132\">\n<h4 class=\"wp-block-heading\" id=\"i-55\">JDBC\u3092\u4f7f\u7528\u3057\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u64cd\u4f5c\u306e\u4f8b\u5916\u51e6\u7406<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Service\n@Transactional\npublic class OrderService {\n    private final DataSource dataSource;\n    private static final Logger log = LoggerFactory.getLogger(OrderService.class);\n\n    public OrderService(DataSource dataSource) {\n        this.dataSource = dataSource;\n    }\n\n    public void createOrder(Order order) {\n        Connection conn = null;\n        PreparedStatement stmt = null;\n\n        try {\n            conn = dataSource.getConnection();\n            conn.setAutoCommit(false);  \/\/ \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u958b\u59cb\n\n            \/\/ \u6ce8\u6587\u30c7\u30fc\u30bf\u306e\u4fdd\u5b58\n            stmt = conn.prepareStatement(\n                \"INSERT INTO orders (customer_id, total_amount, status) VALUES (?, ?, ?)\",\n                Statement.RETURN_GENERATED_KEYS\n            );\n            stmt.setLong(1, order.getCustomerId());\n            stmt.setBigDecimal(2, order.getTotalAmount());\n            stmt.setString(3, OrderStatus.CREATED.name());\n            stmt.executeUpdate();\n\n            \/\/ \u751f\u6210\u3055\u308c\u305fID\u306e\u53d6\u5f97\n            try (ResultSet rs = stmt.getGeneratedKeys()) {\n                if (rs.next()) {\n                    order.setId(rs.getLong(1));\n                } else {\n                    throw new DatabaseException(\"\u6ce8\u6587ID\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\");\n                }\n            }\n\n            \/\/ \u6ce8\u6587\u8a73\u7d30\u306e\u4fdd\u5b58\n            saveOrderDetails(conn, order);\n\n            conn.commit();  \/\/ \u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u30b3\u30df\u30c3\u30c8\n\n        } catch (SQLException e) {\n            try {\n                if (conn != null) {\n                    conn.rollback();  \/\/ \u30a8\u30e9\u30fc\u6642\u306f\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\n                }\n            } catch (SQLException rollbackEx) {\n                log.error(\"\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", rollbackEx);\n            }\n            throw new DatabaseException(\"\u6ce8\u6587\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n\n        } finally {\n            \/\/ \u30ea\u30bd\u30fc\u30b9\u306e\u89e3\u653e\n            try {\n                if (stmt != null) stmt.close();\n                if (conn != null) conn.close();\n            } catch (SQLException e) {\n                log.warn(\"\u30ea\u30bd\u30fc\u30b9\u306e\u89e3\u653e\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n            }\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-133\">\n<h3 class=\"wp-block-heading\" id=\"i-56\">7.2 \u5916\u90e8API\u3068\u306e\u9023\u643a\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-134\">\n<p>\u5916\u90e8API\u3068\u306e\u9023\u643a\u3067\u306f\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u554f\u984c\u3084\u5fdc\u7b54\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306a\u3069\u3001\u69d8\u3005\u306a\u4f8b\u5916\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-135\">\n<h4 class=\"wp-block-heading\" id=\"i-57\">RestTemplate\u3092\u4f7f\u7528\u3057\u305fAPI\u9023\u643a\u306e\u4f8b\u5916\u51e6\u7406<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Service\npublic class PaymentService {\n    private final RestTemplate restTemplate;\n    private final ObjectMapper objectMapper;\n    private static final Logger log = LoggerFactory.getLogger(PaymentService.class);\n\n    \/\/ \u30ea\u30c8\u30e9\u30a4\u8a2d\u5b9a\n    private final RetryTemplate retryTemplate = RetryTemplate.builder()\n        .maxAttempts(3)\n        .exponentialBackoff(100, 2, 1000)\n        .build();\n\n    public PaymentResult processPayment(PaymentRequest request) {\n        try {\n            return retryTemplate.execute(context -&gt; {\n                try {\n                    ResponseEntity&lt;PaymentResult&gt; response = restTemplate.postForEntity(\n                        \"https:\/\/api.payment.example.com\/v1\/payments\",\n                        request,\n                        PaymentResult.class\n                    );\n                    return response.getBody();\n\n                } catch (HttpClientErrorException e) {\n                    \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30a8\u30e9\u30fc\uff08400\u7cfb\uff09\u306e\u51e6\u7406\n                    PaymentError error = parseError(e.getResponseBodyAsString());\n                    throw new PaymentValidationException(\n                        \"\u652f\u6255\u3044\u51e6\u7406\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f: \" + error.getMessage(),\n                        error.getCode()\n                    );\n\n                } catch (HttpServerErrorException e) {\n                    \/\/ \u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\uff08500\u7cfb\uff09\u306e\u51e6\u7406\n                    log.error(\"\u652f\u6255\u3044\u30b5\u30fc\u30d0\u30fc\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {}\", \n                        e.getResponseBodyAsString());\n                    throw new RetryableException(\"\u30b5\u30fc\u30d0\u30fc\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n\n                } catch (ResourceAccessException e) {\n                    \/\/ \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a8\u30e9\u30fc\u306e\u51e6\u7406\n                    log.error(\"\u652f\u6255\u3044\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n                    throw new RetryableException(\"\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n                }\n            });\n\n        } catch (RetryableException e) {\n            \/\/ \u30ea\u30c8\u30e9\u30a4\u5931\u6557\u6642\u306e\u51e6\u7406\n            throw new PaymentProcessingException(\n                \"\u652f\u6255\u3044\u51e6\u7406\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u3057\u3070\u3089\u304f\u7d4c\u3063\u3066\u304b\u3089\u518d\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002\",\n                e\n            );\n        }\n    }\n\n    private PaymentError parseError(String errorResponse) {\n        try {\n            return objectMapper.readValue(errorResponse, PaymentError.class);\n        } catch (JsonProcessingException e) {\n            log.warn(\"\u30a8\u30e9\u30fc\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30d1\u30fc\u30b9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\", e);\n            throw new PaymentProcessingException(\"\u4e0d\u660e\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-136\">\n<h3 class=\"wp-block-heading\" id=\"i-58\">7.3 \u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306e\u4f8b\u5916\u51e6\u7406<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-137\">\n<p>\u30de\u30eb\u30c1\u30b9\u30ec\u30c3\u30c9\u74b0\u5883\u3067\u306f\u3001\u5404\u30b9\u30ec\u30c3\u30c9\u3067\u767a\u751f\u3057\u305f\u4f8b\u5916\u3092\u9069\u5207\u306b\u51e6\u7406\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u306b\u901a\u77e5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-138\">\n<h4 class=\"wp-block-heading\" id=\"i-59\">ExecutorService\u3092\u4f7f\u7528\u3057\u305f\u4e26\u5217\u51e6\u7406\u306e\u4f8b\u5916\u51e6\u7406<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Service\npublic class BatchProcessingService {\n    private final ExecutorService executorService;\n    private static final Logger log = LoggerFactory.getLogger(BatchProcessingService.class);\n\n    public BatchProcessingService() {\n        this.executorService = Executors.newFixedThreadPool(\n            Runtime.getRuntime().availableProcessors()\n        );\n    }\n\n    public List&lt;ProcessResult&gt; processBatch(List&lt;BatchItem&gt; items) {\n        try {\n            \/\/ \u5404\u30a2\u30a4\u30c6\u30e0\u306e\u51e6\u7406\u3092Submit\n            List&lt;Future&lt;ProcessResult&gt;&gt; futures = items.stream()\n                .map(item -&gt; executorService.submit(() -&gt; processItem(item)))\n                .collect(Collectors.toList());\n\n            \/\/ \u7d50\u679c\u306e\u53ce\u96c6\n            List&lt;ProcessResult&gt; results = new ArrayList&lt;&gt;();\n            for (Future&lt;ProcessResult&gt; future : futures) {\n                try {\n                    results.add(future.get(30, TimeUnit.SECONDS));\n                } catch (InterruptedException e) {\n                    Thread.currentThread().interrupt();\n                    throw new BatchProcessingException(\n                        \"\u51e6\u7406\u304c\u4e2d\u65ad\u3055\u308c\u307e\u3057\u305f\", e);\n                } catch (ExecutionException e) {\n                    \/\/ \u30b9\u30ec\u30c3\u30c9\u5185\u3067\u767a\u751f\u3057\u305f\u4f8b\u5916\u306e\u51e6\u7406\n                    log.error(\"\u30a2\u30a4\u30c6\u30e0\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e.getCause());\n                    results.add(ProcessResult.error(\n                        \"\u51e6\u7406\u306b\u5931\u6557\u3057\u307e\u3057\u305f: \" + e.getCause().getMessage()));\n                } catch (TimeoutException e) {\n                    log.warn(\"\u51e6\u7406\u304c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\", e);\n                    results.add(ProcessResult.error(\"\u51e6\u7406\u304c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\"));\n                }\n            }\n\n            return results;\n\n        } finally {\n            \/\/ ExecutorService\u306e\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\n            executorService.shutdown();\n            try {\n                if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {\n                    executorService.shutdownNow();\n                }\n            } catch (InterruptedException e) {\n                executorService.shutdownNow();\n                Thread.currentThread().interrupt();\n            }\n        }\n    }\n\n    private ProcessResult processItem(BatchItem item) {\n        try {\n            \/\/ \u30a2\u30a4\u30c6\u30e0\u306e\u51e6\u7406\u30ed\u30b8\u30c3\u30af\n            validateItem(item);\n            Result result = performProcessing(item);\n            return ProcessResult.success(result);\n\n        } catch (ValidationException e) {\n            log.warn(\"\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc: {}\", e.getMessage());\n            return ProcessResult.error(\"\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30a8\u30e9\u30fc: \" + e.getMessage());\n\n        } catch (ProcessingException e) {\n            log.error(\"\u51e6\u7406\u30a8\u30e9\u30fc: {}\", e.getMessage());\n            return ProcessResult.error(\"\u51e6\u7406\u30a8\u30e9\u30fc: \" + e.getMessage());\n\n        } catch (Exception e) {\n            log.error(\"\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\", e);\n            return ProcessResult.error(\"\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\");\n        }\n    }\n}\n\n@Getter\n@AllArgsConstructor\npublic class ProcessResult {\n    private final boolean success;\n    private final String message;\n    private final Result result;\n\n    public static ProcessResult success(Result result) {\n        return new ProcessResult(true, \"\u51e6\u7406\u304c\u6210\u529f\u3057\u307e\u3057\u305f\", result);\n    }\n\n    public static ProcessResult error(String message) {\n        return new ProcessResult(false, message, null);\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-139\">\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u306f\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3088\u304f\u906d\u9047\u3059\u308b\u72b6\u6cc1\u306b\u5bfe\u3059\u308b\u5177\u4f53\u7684\u306a\u4f8b\u5916\u51e6\u7406\u306e\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u305e\u308c\u306e\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u3001\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u6226\u7565\u3092\u9078\u629e\u3057\u3001\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-140\">\n<h2 class=\"wp-block-heading\" id=\"i-60\">\u307e\u3068\u3081\uff1a\u52b9\u679c\u7684\u306a\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u73fe\u306b\u5411\u3051\u3066<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-141\">\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u306b\u3064\u3044\u3066\u3001\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u7684\u306a\u5b9f\u88c5\u4f8b\u307e\u3067\u5e45\u5e83\u304f\u89e3\u8aac\u3057\u3066\u304d\u307e\u3057\u305f\u3002\u3053\u3053\u3067\u5b66\u3093\u3060\u4e3b\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u3092\u632f\u308a\u8fd4\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-142\">\n<h4 class=\"wp-block-heading\" id=\"i-61\">\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u306e\u6574\u7406<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-143\">\n<p>\u30001. \u4f8b\u5916\u51e6\u7406\u306e\u57fa\u672c\u539f\u5247<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-144\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u4f8b\u5916\u306e\u7a2e\u985e\u9078\u629e\uff08\u30c1\u30a7\u30c3\u30af\u4f8b\u5916 vs \u30e9\u30f3\u30bf\u30a4\u30e0\u4f8b\u5916\uff09<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-145\">\n<p>\u3000\u3000\u25cf try-with-resources\u306b\u3088\u308b\u78ba\u5b9f\u306a\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-146\">\n<p>\u3000\u3000\u25cf \u610f\u5473\u306e\u3042\u308b\u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4f5c\u6210<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-147\">\n<p>\u30002. \u5b9f\u88c5\u306b\u304a\u3051\u308b\u6ce8\u610f\u70b9<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-148\">\n<p>\u3000\u3000\u25cf \u7a7a\u306ecatch\u30d6\u30ed\u30c3\u30af\u3092\u907f\u3051\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-149\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u7c92\u5ea6\u3067\u306e\u4f8b\u5916\u30ad\u30e3\u30c3\u30c1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-150\">\n<p>\u3000\u3000\u25cf \u4f8b\u5916\u306e\u30e9\u30c3\u30d7\u3068\u518d\u30b9\u30ed\u30fc\u6226\u7565\u306e\u6d3b\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-151\">\n<p>\u30003. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u8a08\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-152\">\n<p>\u3000\u3000\u25cf \u30ec\u30a4\u30e4\u30fc\u5225\u306e\u9069\u5207\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-153\">\n<p>\u3000\u3000\u25cf \u69cb\u9020\u5316\u3055\u308c\u305f\u30ed\u30b0\u51fa\u529b\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-154\">\n<p>\u3000\u3000\u25cf \u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u3092\u8003\u616e\u3057\u305f\u8a2d\u8a08<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-155\">\n<p>\u30004. \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u306e\u7d71\u5408<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-156\">\n<p>\u3000\u3000\u25cf Spring Framework\u306b\u304a\u3051\u308b\u52b9\u679c\u7684\u306a\u4f8b\u5916\u51e6\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-157\">\n<p>\u3000\u3000\u25cf @ExceptionHandler\u306e\u9069\u5207\u306a\u4f7f\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-158\">\n<p>\u3000\u3000\u25cf \u30b0\u30ed\u30fc\u30d0\u30eb\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u30fc\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-159\">\n<h4 class=\"wp-block-heading\" id=\"i-62\">\u5b9f\u88c5\u6642\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-160\">\n<p>\u3000\u52b9\u679c\u7684\u306a\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\u3092\u6d3b\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-161\">\n<p>\u3000\u2705 \u4f8b\u5916\u51e6\u7406\u306e\u57fa\u672c<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-162\">\n<p>\u3000\u3000\u3000\u25cf \u9069\u5207\u306a\u4f8b\u5916\u30af\u30e9\u30b9\u306e\u9078\u629e<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-163\">\n<p>\u3000\u3000\u3000\u25cf \u660e\u78ba\u306a\u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-164\">\n<p>\u3000\u3000\u3000\u25cf \u30ea\u30bd\u30fc\u30b9\u306e\u78ba\u5b9f\u306a\u89e3\u653e<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-165\">\n<p>\u3000\u2705 \u30b3\u30fc\u30c9\u54c1\u8cea<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-166\">\n<p>\u3000\u3000\u3000\u25cf \u7a7a\u306ecatch\u30d6\u30ed\u30c3\u30af\u306e\u6392\u9664<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-167\">\n<p>\u3000\u3000\u3000\u25cf \u9069\u5207\u306a\u30ed\u30b0\u51fa\u529b\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-168\">\n<p>\u3000\u3000\u3000\u25cf \u4f8b\u5916\u30c1\u30a7\u30fc\u30f3\u306e\u4fdd\u6301<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-169\">\n<p>\u3000\u2705 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u8a2d\u8a08<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-170\">\n<p>\u3000\u3000\u3000\u25cf \u30ec\u30a4\u30e4\u30fc\u5225\u306e\u4f8b\u5916\u6226\u7565\u306e\u5b9a\u7fa9<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-171\">\n<p>\u3000\u3000\u3000\u25cf \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u4e00\u8cab\u6027\u78ba\u4fdd<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-172\">\n<p>\u3000\u3000\u3000\u25cf \u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u306e\u78ba\u4fdd<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-173\">\n<h4 class=\"wp-block-heading\" id=\"i-63\">\u4eca\u5f8c\u306e\u5b66\u7fd2\u306b\u5411\u3051\u3066<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-174\">\n<p>\u4f8b\u5916\u51e6\u7406\u306e\u5b9f\u88c5\u30b9\u30ad\u30eb\u3092\u66f4\u306b\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u53d6\u308a\u7d44\u307f\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-175\">\n<p>\u30001. \u5b9f\u8df5\u7684\u306a\u7d4c\u9a13\u3092\u7a4d\u3080<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-176\">\n<p>\u3000\u3000\u25cf \u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-177\">\n<p>\u3000\u3000\u25cf \u3055\u307e\u3056\u307e\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3078\u306e\u5bfe\u5fdc<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-178\">\n<p>\u3000\u3000\u25cf \u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u3092\u901a\u3058\u305f\u6539\u5584<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-179\">\n<p>\u30002. \u6700\u65b0\u52d5\u5411\u306e\u30ad\u30e3\u30c3\u30c1\u30a2\u30c3\u30d7<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-180\">\n<p>\u3000\u3000\u25cf Java\u8a00\u8a9e\u306e\u65b0\u6a5f\u80fd\u78ba\u8a8d<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-181\">\n<p>\u3000\u3000\u25cf \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u628a\u63e1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-182\">\n<p>\u3000\u3000\u25cf \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3067\u306e\u8b70\u8ad6\u53c2\u52a0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-183\">\n<p>\u30003. \u30c6\u30b9\u30c8\u99c6\u52d5\u958b\u767a\u306e\u5b9f\u8df5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-184\">\n<p>\u3000\u3000\u25cf \u4f8b\u5916\u30b1\u30fc\u30b9\u306e\u30c6\u30b9\u30c8\u4f5c\u6210<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-185\">\n<p>\u3000\u3000\u25cf \u30a8\u30c3\u30b8\u30b1\u30fc\u30b9\u306e\u8003\u616e<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-186\">\n<p>\u3000\u3000\u25cf \u30c6\u30b9\u30c8\u5bb9\u6613\u6027\u306e\u5411\u4e0a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-187\">\n<h4 class=\"wp-block-heading\" id=\"i-64\">\u304a\u308f\u308a\u306b<\/h4>\n<\/div>\n\n\n<p>\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u306f\u3001\u5805\u7262\u306aJava\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u767a\u3059\u308b\u4e0a\u3067\u4e0d\u53ef\u6b20\u306a\u8981\u7d20\u3067\u3059\u3002\u672c\u8a18\u4e8b\u3067\u89e3\u8aac\u3057\u305f\u5185\u5bb9\u3092\u57fa\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7279\u6027\u3084\u8981\u4ef6\u306b\u5fdc\u3058\u3066\u3001\u6700\u9069\u306a\u4f8b\u5916\u51e6\u7406\u3092\u5b9f\u88c5\u3057\u3066\u3044\u3063\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u30a8\u30e9\u30fc\u51e6\u7406\u306f\u5f80\u3005\u306b\u3057\u3066\u5f8c\u56de\u3057\u306b\u3055\u308c\u304c\u3061\u3067\u3059\u304c\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u521d\u671f\u6bb5\u968e\u304b\u3089\u9069\u5207\u306a\u4f8b\u5916\u51e6\u7406\u6226\u7565\u3092\u7b56\u5b9a\u3057\u3001\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u9577\u671f\u7684\u306a\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u3068\u4fe1\u983c\u6027\u306e\u5411\u4e0a\u306b\u3064\u306a\u304c\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u672c\u8a18\u4e8b\u304c\u3001\u7686\u69d8\u306e\u5b9f\u52d9\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u306e\u6539\u5584\u306b\u5f79\u7acb\u3064\u3053\u3068\u3092\u9858\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":2920,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,74,66],"tags":[],"class_list":{"0":"post-779","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-java","8":"category-java-error-handling","9":"category-java-syntax"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=779"}],"version-history":[{"count":8,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/779\/revisions"}],"predecessor-version":[{"id":2957,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/779\/revisions\/2957"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/media\/2920"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}