{"id":200,"date":"2022-10-12T07:49:30","date_gmt":"2023-10-08T10:41:15","guid":{"rendered":"https:\/\/www.silicloud.com\/ja\/blog\/index.php\/2023\/11\/30\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/"},"modified":"2025-07-31T21:36:10","modified_gmt":"2025-07-31T12:36:10","slug":"java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/","title":{"rendered":"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406"},"content":{"rendered":"<h3>\u4ee5\u4e0b\u306f\u65e5\u672c\u8a9e\u3067\u81ea\u7136\u306a\u8868\u73fe\u3067\u306e\u30d1\u30e9\u30d5\u30ec\u30fc\u30ba\u3067\u3059\uff08\u4e00\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u307f\uff09\uff1a<\/h3>\n<p>\u30a4\u30f3\u30c8\u30ed\u30c0\u30af\u30b7\u30e7\u30f3<\/p>\n<p>\u4f8b\u5916\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u767a\u751f\u3057\u3001\u901a\u5e38\u306e\u30d5\u30ed\u30fc\u3092\u59a8\u3052\u308b\u30a8\u30e9\u30fc\u30a4\u30d9\u30f3\u30c8\u3067\u3059\u3002Java\u3067\u306f\u3001Java\u4f8b\u5916\u51e6\u7406\u3068\u3057\u3066\u77e5\u3089\u308c\u308b\u4f8b\u5916\u30b7\u30ca\u30ea\u30aa\u3092\u5805\u7262\u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u306e\u65b9\u6cd5\u3067\u51e6\u7406\u3059\u308b\u624b\u6bb5\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Java\u306b\u304a\u3044\u3066\u3001\u4f8b\u5916\u306f\u69d8\u3005\u306a\u72b6\u6cc1\u304b\u3089\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u9593\u9055\u3063\u305f\u30c7\u30fc\u30bf\u3092\u5165\u529b\u3057\u305f\u5834\u5408\u3001\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u306e\u6545\u969c\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a\u306e\u5931\u6557\u3001\u307e\u305f\u306f\u30c0\u30a6\u30f3\u3057\u3066\u3044\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306a\u3069\u3067\u3059\u3002\u7279\u5b9a\u306e\u4f8b\u5916\u306e\u30b7\u30ca\u30ea\u30aa\u306b\u5bfe\u3057\u3066\u4f55\u3092\u3059\u3079\u304d\u304b\u3092\u6307\u5b9a\u3059\u308b\u30b3\u30fc\u30c9\u306f\u4f8b\u5916\u51e6\u7406\u3068\u547c\u3070\u308c\u307e\u3059\u3002<\/p>\n<h2>\u4f8b\u5916\u306e\u30b9\u30ed\u30fc\u3068\u30ad\u30e3\u30c3\u30c1<\/h2>\n<p>Java\u306f\u3001\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u306f\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u306e\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u306e\u968e\u5c64\u69cb\u9020\u3084\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u884c\u756a\u53f7\u3001\u4f8b\u5916\u306e\u7a2e\u985e\u306a\u3069\u3001\u591a\u304f\u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n<p>\u30e1\u30bd\u30c3\u30c9\u5185\u3067\u4f8b\u5916\u304c\u767a\u751f\u3059\u308b\u3068\u3001\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3057\u3066\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u306b\u6e21\u3059\u30d7\u30ed\u30bb\u30b9\u3092\u300c\u4f8b\u5916\u3092\u6295\u3052\u308b\u300d\u3068\u547c\u3073\u307e\u3059\u3002\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u901a\u5e38\u306e\u30d5\u30ed\u30fc\u304c\u505c\u6b62\u3057\u3001Java\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\uff08JRE\uff09\u304c\u4f8b\u5916\u306e\u30cf\u30f3\u30c9\u30e9\u30fc\u3092\u63a2\u305d\u3046\u3068\u3057\u307e\u3059\u3002\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u30fc\u306f\u3001\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u306e\u30d6\u30ed\u30c3\u30af\u3067\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>The logic to find the exception handler begins with searching in the method where the error occurred.<\/li>\n<li>If no appropriate handler is found, then it will move to the caller method.<\/li>\n<li>And so on.<\/li>\n<\/ul>\n<p>\u3082\u3057\u3082\u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3057\u30b9\u30bf\u30c3\u30af\u304cA-&gt;B-&gt;C\u3067\u3042\u308a\u3001\u30e1\u30bd\u30c3\u30c9C\u3067\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u3001\u9069\u5207\u306a\u30cf\u30f3\u30c9\u30e9\u306e\u691c\u7d22\u306fC-&gt;B-&gt;A\u3078\u3068\u79fb\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p>\u9069\u5207\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u304c\u898b\u3064\u304b\u3063\u305f\u5834\u5408\u3001\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u30cf\u30f3\u30c9\u30e9\u306b\u6e21\u3055\u308c\u3001\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u30cf\u30f3\u30c9\u30e9\u306f\u300c\u4f8b\u5916\u3092\u6355\u6349\u3059\u308b\u300d\u3068\u8a00\u308f\u308c\u307e\u3059\u3002\u9069\u5207\u306a\u4f8b\u5916\u30cf\u30f3\u30c9\u30e9\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u7d42\u4e86\u3057\u3001\u4f8b\u5916\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u51fa\u529b\u3057\u307e\u3059\u3002<\/p>\n<p>Java\u306e\u4f8b\u5916\u51e6\u7406\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u30a8\u30e9\u30fc\u306e\u307f\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306e\u30a8\u30e9\u30fc\u306f\u3001\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u958b\u767a\u8005\u306b\u3088\u3063\u3066\u4fee\u6b63\u3055\u308c\u306a\u3051\u308c\u3070\u306a\u3089\u305a\u3001\u305d\u308c\u3092\u3057\u306a\u3044\u3068\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002<\/p>\n<h2>Java\u306e\u4f8b\u5916\u51e6\u7406\u30ad\u30fc\u30ef\u30fc\u30c9<\/h2>\n<p>Java\u3067\u306f\u3001\u4f8b\u5916\u51e6\u7406\u3092\u76ee\u7684\u3068\u3057\u305f\u7279\u5b9a\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>throw \u2013 \u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u3001\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u4f5c\u6210\u3055\u308c\u3001Java\u30e9\u30f3\u30bf\u30a4\u30e0\u306f\u305d\u308c\u3089\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u51e6\u7406\u3092\u958b\u59cb\u3057\u307e\u3059\u3002\u30b3\u30fc\u30c9\u5185\u3067\u660e\u793a\u7684\u306b\u4f8b\u5916\u3092\u751f\u6210\u3057\u305f\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306f\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u304cnull\u306e\u5834\u5408\u306b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u4f8b\u5916\u3092\u6295\u3052\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002throw\u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u3001\u4f8b\u5916\u3092\u30e9\u30f3\u30bf\u30a4\u30e0\u306b\u6295\u3052\u3066\u51e6\u7406\u3055\u305b\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>throws \u2013 \u30e1\u30bd\u30c3\u30c9\u5185\u3067\u4f8b\u5916\u3092\u6295\u3052\u3066\u51e6\u7406\u3057\u306a\u3044\u5834\u5408\u3001\u30e1\u30bd\u30c3\u30c9\u30b7\u30b0\u30cd\u30c1\u30e3\u306bthrows\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3001\u547c\u3073\u51fa\u3057\u5074\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u30e1\u30bd\u30c3\u30c9\u3067\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u4f8b\u5916\u3092\u77e5\u3089\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u547c\u3073\u51fa\u3057\u5074\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u308c\u3089\u306e\u4f8b\u5916\u3092\u51e6\u7406\u3059\u308b\u304b\u3001throws\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u547c\u3073\u51fa\u3057\u5074\u306e\u30e1\u30bd\u30c3\u30c9\u306b\u4f1d\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002throws\u7bc0\u306b\u306f\u8907\u6570\u306e\u4f8b\u5916\u3092\u6307\u5b9a\u3067\u304d\u3001main()\u30e1\u30bd\u30c3\u30c9\u3068\u3082\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>try-catch \u2013 \u30b3\u30fc\u30c9\u3067\u4f8b\u5916\u51e6\u7406\u306b\u306ftry-catch\u30d6\u30ed\u30c3\u30af\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002try\u306f\u30d6\u30ed\u30c3\u30af\u306e\u958b\u59cb\u3067\u3042\u308a\u3001catch\u306ftry\u30d6\u30ed\u30c3\u30af\u306e\u6700\u5f8c\u306b\u3042\u308a\u3001\u4f8b\u5916\u3092\u51e6\u7406\u3057\u307e\u3059\u3002try\u30d6\u30ed\u30c3\u30af\u306b\u306f\u8907\u6570\u306ecatch\u30d6\u30ed\u30c3\u30af\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002try-catch\u30d6\u30ed\u30c3\u30af\u306f\u30cd\u30b9\u30c8\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002catch\u30d6\u30ed\u30c3\u30af\u306b\u306f\u3001\u4f8b\u5916\u578b\u3067\u3042\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n<p>finally \u2013 finally\u30d6\u30ed\u30c3\u30af\u306f\u7701\u7565\u53ef\u80fd\u3067\u3001try-catch\u30d6\u30ed\u30c3\u30af\u3068\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u4f8b\u5916\u306f\u5b9f\u884c\u30d7\u30ed\u30bb\u30b9\u3092\u505c\u6b62\u3059\u308b\u305f\u3081\u3001\u30af\u30ed\u30fc\u30ba\u3055\u308c\u306a\u3044\u307e\u307e\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u3042\u308b\u5834\u5408\u306bfinally\u30d6\u30ed\u30c3\u30af\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002finally\u30d6\u30ed\u30c3\u30af\u306f\u5e38\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u304b\u3069\u3046\u304b\u306b\u95a2\u4fc2\u306a\u304f\u3002<\/p>\n<h2>\u4f8b\u5916\u51e6\u7406\u306e\u4f8b<\/h2>\n<div>\u4f8b\u5916\u51e6\u7406.java<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">package<\/span> <span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>scdev<span class=\"token punctuation\">.<\/span>exceptions<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>io<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">FileNotFoundException<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>io<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">IOException<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ExceptionHandling<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <mark><span class=\"token keyword\">throws<\/span><\/mark> <span class=\"token class-name\">FileNotFoundException<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">IOException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<mark><span class=\"token keyword\">try<\/span><\/mark> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<span class=\"token function\">testException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token function\">testException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <mark><span class=\"token keyword\">catch<\/span><span class=\"token punctuation\">(<\/span><\/mark><span class=\"token class-name\">FileNotFoundException<\/span> e<mark><span class=\"token punctuation\">)<\/span><\/mark> <span class=\"token punctuation\">{<\/span>\r\n\t\t\te<span class=\"token punctuation\">.<\/span><span class=\"token function\">printStackTrace<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <mark><span class=\"token keyword\">catch<\/span><span class=\"token punctuation\">(<\/span><\/mark><span class=\"token class-name\">IOException<\/span> e<mark><span class=\"token punctuation\">)<\/span><\/mark> <span class=\"token punctuation\">{<\/span>\r\n\t\t\te<span class=\"token punctuation\">.<\/span><span class=\"token function\">printStackTrace<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <mark><span class=\"token keyword\">finally<\/span><\/mark> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Releasing resources\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span>\r\n\t\t<span class=\"token function\">testException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">15<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n\t<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">testException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token punctuation\">)<\/span> <mark><span class=\"token keyword\">throws<\/span><\/mark> <span class=\"token class-name\">FileNotFoundException<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">IOException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<span class=\"token class-name\">FileNotFoundException<\/span> myException <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <mark><span class=\"token class-name\">FileNotFoundException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Negative Integer \"<\/span> <span class=\"token operator\">+<\/span> i<span class=\"token punctuation\">)<\/span><\/mark><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<mark><span class=\"token keyword\">throw<\/span><\/mark> myException<span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<mark><span class=\"token keyword\">throw<\/span><\/mark> <span class=\"token keyword\">new<\/span> <mark><span class=\"token class-name\">IOException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Only supported for index 0 to 10\"<\/span><span class=\"token punctuation\">)<\/span><\/mark><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li>The testException() method is throwing exceptions using the throw keyword. The method signature uses the throws keyword to let the caller know the type of exceptions it might throw.<\/li>\n<li>In the main() method, I am handling exceptions using the try-catch block in the main() method. When I am not handling it, I am propagating it to runtime with the throws clause in the main() method.<\/li>\n<li>The testException(-10) never gets executed because of the exception and then the finally block is executed.<\/li>\n<\/ul>\n<p>printStackTrace()\u306f\u30c7\u30d0\u30c3\u30b0\u76ee\u7684\u3067Exception\u30af\u30e9\u30b9\u306e\u4e2d\u3067\u4f7f\u308f\u308c\u308b\u4fbf\u5229\u306a\u30e1\u30bd\u30c3\u30c9\u306e\u4e00\u3064\u3067\u3059\u3002<\/p>\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u306f\u6b21\u306e\u3088\u3046\u306b\u51fa\u529b\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p><mark>java.io.FileNotFoundException: Negative Integer -5<\/mark> at com.scdev.exceptions.ExceptionHandling.testException(ExceptionHandling.java:24) at com.scdev.exceptions.ExceptionHandling.main(ExceptionHandling.java:10) Releasing resources Exception in thread &#8220;main&#8221; <mark>java.io.IOException: Only supported for index 0 to 10<\/mark> at com.scdev.exceptions.ExceptionHandling.testException(ExceptionHandling.java:27) at com.scdev.exceptions.ExceptionHandling.main(ExceptionHandling.java:19)<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u3044\u304f\u3064\u304b\u306e\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul class=\"post-ul\">\n<li>We can\u2019t have catch or finally clause without a try statement.<\/li>\n<li>A try statement should have either catch block or finally block, it can have both blocks.<\/li>\n<li>We can\u2019t write any code between try-catch-finally blocks.<\/li>\n<li>We can have multiple catch blocks with a single try statement.<\/li>\n<li>try-catch blocks can be nested similar to if-else statements.<\/li>\n<li>We can have only one finally block with a try-catch statement.<\/li>\n<\/ul>\n<h2>Java\u306e\u4f8b\u5916\u306e\u968e\u5c64\u69cb\u9020<\/h2>\n<p>\u524d\u8ff0\u306e\u901a\u308a\u3001\u4f8b\u5916\u304c\u767a\u751f\u3059\u308b\u3068\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002Java\u306e\u4f8b\u5916\u306f\u968e\u5c64\u7684\u3067\u3042\u308a\u3001\u7d99\u627f\u3092\u5229\u7528\u3057\u3066\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u4f8b\u5916\u3092\u5206\u985e\u3057\u3066\u3044\u307e\u3059\u3002Throwable\u306fJava\u306e\u4f8b\u5916\u968e\u5c64\u306e\u89aa\u30af\u30e9\u30b9\u3067\u3042\u308a\u3001\u305d\u306e\u4e0b\u306b\u306fError\u3068Exception\u3068\u3044\u30462\u3064\u306e\u5b50\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u307e\u3059\u3002Exception\u306f\u3055\u3089\u306b\u3001\u30c1\u30a7\u30c3\u30af\u3055\u308c\u308b\u4f8b\u5916\u3068\u5b9f\u884c\u6642\u4f8b\u5916\u306b\u5206\u3051\u3089\u308c\u307e\u3059\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u30a8\u30e9\u30fc\uff1a\u30a8\u30e9\u30fc\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u7bc4\u56f2\u5916\u3067\u4e88\u6e2c\u3084\u56de\u5fa9\u304c\u4e0d\u53ef\u80fd\u306a\u4f8b\u5916\u7684\u306a\u30b7\u30ca\u30ea\u30aa\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u306e\u6545\u969c\u3001Java\u4eee\u60f3\u30de\u30b7\u30f3\uff08JVM\uff09\u306e\u30af\u30e9\u30c3\u30b7\u30e5\u3001\u307e\u305f\u306f\u30e1\u30e2\u30ea\u4e0d\u8db3\u30a8\u30e9\u30fc\u306a\u3069\u304c\u6319\u3052\u3089\u308c\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001\u30a8\u30e9\u30fc\u306b\u306f\u5225\u500b\u306e\u968e\u5c64\u304c\u3042\u308a\u3001\u3053\u308c\u3089\u306e\u72b6\u6cc1\u3092\u51e6\u7406\u3057\u3088\u3046\u3068\u3057\u3066\u306f\u3044\u3051\u307e\u305b\u3093\u3002\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u306e\u4f8b\u3068\u3057\u3066\u3001OutOfMemoryError\u3084StackOverflowError\u304c\u3042\u308a\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>\u30c1\u30a7\u30c3\u30af\u4f8b\u5916\uff1a\u30c1\u30a7\u30c3\u30af\u4f8b\u5916\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u4e88\u6e2c\u3057\u3001\u56de\u5fa9\u3092\u8a66\u307f\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u4f8b\u5916\u7684\u306a\u30b7\u30ca\u30ea\u30aa\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u3001FileNotFoundException\u306a\u3069\u3067\u3059\u3002\u3053\u306e\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u3066\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u6709\u7528\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3057\u3001\u30c7\u30d0\u30c3\u30b0\u76ee\u7684\u3067\u9069\u5207\u306b\u30ed\u30b0\u3092\u53d6\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Exception\u306f\u3001\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af\u4f8b\u5916\u306e\u89aa\u30af\u30e9\u30b9\u3067\u3059\u3002\u3082\u3057\u3082\u30c1\u30a7\u30c3\u30af\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\u3059\u308b\u5834\u5408\u306f\u3001\u540c\u3058\u30e1\u30bd\u30c3\u30c9\u5185\u3067\u305d\u308c\u3092\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u304b\u3001throws\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u547c\u3073\u51fa\u3057\u5143\u306b\u4f1d\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u5b9f\u884c\u6642\u4f8b\u5916\uff1a\u5b9f\u884c\u6642\u4f8b\u5916\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u30df\u30b9\u306b\u3088\u3063\u3066\u5f15\u304d\u8d77\u3053\u3055\u308c\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u914d\u5217\u304b\u3089\u8981\u7d20\u3092\u53d6\u5f97\u3057\u3088\u3046\u3068\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u8981\u7d20\u3092\u53d6\u5f97\u3059\u308b\u524d\u306b\u914d\u5217\u306e\u9577\u3055\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3057\u306a\u3051\u308c\u3070\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u6642\u306bArrayIndexOutOfBoundException\u304c\u30b9\u30ed\u30fc\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002RuntimeException\u306f\u3001\u3059\u3079\u3066\u306e\u5b9f\u884c\u6642\u4f8b\u5916\u306e\u89aa\u30af\u30e9\u30b9\u3067\u3059\u3002\u30e1\u30bd\u30c3\u30c9\u3067\u5b9f\u884c\u6642\u4f8b\u5916\u3092\u30b9\u30ed\u30fc\u3059\u308b\u5834\u5408\u3001\u30e1\u30bd\u30c3\u30c9\u306e\u30b7\u30b0\u30cd\u30c1\u30e3\u306ethrows\u7bc0\u306b\u305d\u308c\u3092\u660e\u793a\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u5b9f\u884c\u6642\u4f8b\u5916\u306f\u3001\u3088\u308a\u826f\u3044\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306b\u3088\u3063\u3066\u56de\u907f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/656469c0daa94e2bdf7b55ee\/25-0.png\" alt=\"Diagram of the Java Exception Hierarchy. Throwable is at the top of the diagram. One branch of this tree is Error. Below Error are OutOfMemoryError and IOError. Another branch of this tree is Exception. Exception splits into IOException and RuntimeException. Below IOException is FileNotFoundException. Below RuntimeException is NullPointerException.\" \/><\/div>\n<h2>\u4f8b\u5916\u30af\u30e9\u30b9\u306e\u4fbf\u5229\u306a\u30e1\u30bd\u30c3\u30c9\u306e\u3044\u304f\u3064\u304b<\/h2>\n<p>Java\u306eException\u3068\u305d\u306e\u3059\u3079\u3066\u306e\u30b5\u30d6\u30af\u30e9\u30b9\u306f\u3001\u7279\u5b9a\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u305b\u305a\u3001\u3059\u3079\u3066\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u57fa\u672c\u30af\u30e9\u30b9\u3067\u3042\u308bThrowable\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4f8b\u5916\u30af\u30e9\u30b9\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u7a2e\u985e\u306e\u4f8b\u5916\u30b7\u30ca\u30ea\u30aa\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f5c\u6210\u3055\u308c\u3066\u304a\u308a\u3001\u30eb\u30fc\u30c8\u539f\u56e0\u3092\u7c21\u5358\u306b\u7279\u5b9a\u3057\u3001\u30bf\u30a4\u30d7\u306b\u5fdc\u3058\u3066\u4f8b\u5916\u3092\u51e6\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Throwable\u30af\u30e9\u30b9\u306f\u3001\u76f8\u4e92\u904b\u7528\u6027\u306e\u305f\u3081\u306bSerializable\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Throwable\u30af\u30e9\u30b9\u306e\u4fbf\u5229\u306a\u30e1\u30bd\u30c3\u30c9\u306e\u4e00\u90e8\u306f\u6b21\u306e\u901a\u308a\u3067\u3059:<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>public String getMessage() &#8211; \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001Throwable\u306e\u30e1\u30c3\u30bb\u30fc\u30b8String\u3092\u8fd4\u3057\u3001\u4f8b\u5916\u304c\u4f5c\u6210\u3055\u308c\u308b\u969b\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>public String getLocalizedMessage() &#8211; \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30b5\u30d6\u30af\u30e9\u30b9\u304c\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u3066\u547c\u3073\u51fa\u3057\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3055\u308c\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u63d0\u4f9b\u3059\u308b\u305f\u3081\u306b\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u3059\u3002Throwable\u30af\u30e9\u30b9\u306e\u5b9f\u88c5\u3067\u306f\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306fgetMessage()\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8fd4\u3057\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>public synchronized Throwable getCause() &#8211; \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u4f8b\u5916\u306e\u539f\u56e0\u3092\u8fd4\u3057\u307e\u3059\u3002\u539f\u56e0\u304c\u4e0d\u660e\u306a\u5834\u5408\u306fnull\u3092\u8fd4\u3057\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>public String toString() &#8211; \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001Throwable\u306e\u60c5\u5831\u3092\u6587\u5b57\u5217\u5f62\u5f0f\u3067\u8fd4\u3057\u307e\u3059\u3002\u8fd4\u3055\u308c\u308b\u6587\u5b57\u5217\u306b\u306f\u3001Throwable\u30af\u30e9\u30b9\u306e\u540d\u524d\u3068\u30ed\u30fc\u30ab\u30e9\u30a4\u30ba\u3055\u308c\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>public void printStackTrace() &#8211; \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u60c5\u5831\u3092\u6a19\u6e96\u30a8\u30e9\u30fc\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u51fa\u529b\u3057\u307e\u3059\u3002\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u30aa\u30fc\u30d0\u30fc\u30ed\u30fc\u30c9\u3055\u308c\u3066\u304a\u308a\u3001\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u60c5\u5831\u3092\u30d5\u30a1\u30a4\u30eb\u307e\u305f\u306f\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u66f8\u304d\u8fbc\u3080\u305f\u3081\u306b\u5f15\u6570\u3068\u3057\u3066PrintStream\u307e\u305f\u306fPrintWriter\u3092\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/ol>\n<h2>Java 7\u3067\u306f\u3001\u81ea\u52d5\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u3084\u30ad\u30e3\u30c3\u30c1\u30d6\u30ed\u30c3\u30af\u306e\u6539\u5584\u304c\u884c\u308f\u308c\u307e\u3057\u305f\u3002<\/h2>\n<p>\uff11\u3064\u306etry\u30d6\u30ed\u30c3\u30af\u5185\u3067\u591a\u304f\u306e\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u3066\u3044\u308b\u5834\u5408\u3001catch\u30d6\u30ed\u30c3\u30af\u306e\u30b3\u30fc\u30c9\u306f\u30a8\u30e9\u30fc\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3059\u308b\u305f\u3081\u306e\u5197\u9577\u306a\u30b3\u30fc\u30c9\u3067\u5360\u3081\u3089\u308c\u308b\u3053\u3068\u306b\u6c17\u4ed8\u304f\u3067\u3057\u3087\u3046\u3002Java 7\u3067\u306f\u3001\u8907\u6570\u306e\u4f8b\u5916\u30921\u3064\u306ecatch\u30d6\u30ed\u30c3\u30af\u3067\u30ad\u30e3\u30c3\u30c1\u3059\u308b\u6539\u826f\u3055\u308c\u305f\u6a5f\u80fd\u304c\u5c0e\u5165\u3055\u308c\u307e\u3057\u305f\u3002\u4ee5\u4e0b\u306b\u3001\u3053\u306e\u6a5f\u80fd\u3092\u4f7f\u7528\u3057\u305fcatch\u30d6\u30ed\u30c3\u30af\u306e\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">IOException<\/span> <span class=\"token operator\">|<\/span> <span class=\"token class-name\">SQLException<\/span> ex<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n    logger<span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span>ex<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">MyException<\/span><span class=\"token punctuation\">(<\/span>ex<span class=\"token punctuation\">.<\/span><span class=\"token function\">getMessage<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u4f8b\u5916\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306ffinal\u3067\u3042\u308a\u3001catch\u30d6\u30ed\u30c3\u30af\u5185\u3067\u306f\u4fee\u6b63\u3067\u304d\u306a\u3044\u306a\u3069\u3001\u3044\u304f\u3064\u304b\u306e\u5236\u7d04\u304c\u3042\u308a\u307e\u3059\u3002Java 7 Catch Block Improvements\u306e\u5b8c\u5168\u306a\u89e3\u6790\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u3001\u30ea\u30bd\u30fc\u30b9\u3092\u30af\u30ed\u30fc\u30ba\u3059\u308b\u305f\u3081\u306bfinally\u30d6\u30ed\u30c3\u30af\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u6642\u306b\u306f\u305d\u308c\u3092\u9589\u3058\u308b\u306e\u3092\u5fd8\u308c\u3001\u30ea\u30bd\u30fc\u30b9\u304c\u67af\u6e07\u3057\u305f\u969b\u306b\u5b9f\u884c\u6642\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u4f8b\u5916\u306f\u30c7\u30d0\u30c3\u30b0\u304c\u96e3\u3057\u304f\u3001\u305d\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u6240\u3092\u898b\u76f4\u3057\u3066\u30af\u30ed\u30fc\u30ba\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002Java 7\u3067\u306f\u3001try-with-resources\u304c\u6539\u5584\u306e\u4e00\u3064\u3068\u3057\u3066\u5c0e\u5165\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u306b\u3088\u308a\u3001try\u6587\u81ea\u4f53\u3067\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u3001try-catch\u30d6\u30ed\u30c3\u30af\u306e\u4e2d\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002try-catch\u30d6\u30ed\u30c3\u30af\u3092\u629c\u3051\u308b\u3068\u304d\u306b\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u74b0\u5883\u304c\u81ea\u52d5\u7684\u306b\u3053\u308c\u3089\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u30af\u30ed\u30fc\u30ba\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u3053\u306e\u6539\u5584\u3092\u5229\u7528\u3057\u305ftry-catch\u30d6\u30ed\u30c3\u30af\u306e\u4f8b\u3067\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">MyResource<\/span> mr <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">MyResource<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"MyResource created in try-with-resources\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Exception<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\te<span class=\"token punctuation\">.<\/span><span class=\"token function\">printStackTrace<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30af\u30e9\u30b9\u306e\u4f8b<\/h2>\n<p>Java\u306f\u3001\u79c1\u305f\u3061\u304c\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u591a\u304f\u306e\u4f8b\u5916\u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u3066\u304f\u308c\u307e\u3059\u304c\u3001\u6642\u306b\u306f\u72ec\u81ea\u306e\u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u9069\u5207\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u547c\u3073\u51fa\u3057\u5143\u306b\u7279\u5b9a\u306e\u7a2e\u985e\u306e\u4f8b\u5916\u3092\u901a\u77e5\u3059\u308b\u305f\u3081\u3067\u3059\u3002\u79c1\u305f\u3061\u306f\u3001\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u306a\u3069\u306e\u8ffd\u8de1\u7528\u306e\u30ab\u30b9\u30bf\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u307f\u3092\u51e6\u7406\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u4f5c\u6210\u3057\u305f\u5834\u5408\u3001\u4ed6\u306e\u7a2e\u985e\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5165\u529b\u3055\u308c\u305f\u5834\u5408\u306b\u3001\u547c\u3073\u51fa\u3057\u5143\u306b\u9069\u5207\u306a\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u3092\u63d0\u4f9b\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u6700\u521d\u306b\u3001MyException\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>\u79c1\u306e\u4f8b\u5916.java<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">package<\/span> <span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>scdev<span class=\"token punctuation\">.<\/span>exceptions<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">MyException<\/span> <span class=\"token keyword\">extends<\/span> <span class=\"token class-name\">Exception<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">long<\/span> serialVersionUID <span class=\"token operator\">=<\/span> <span class=\"token number\">4664456874499611218L<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token keyword\">private<\/span> <span class=\"token class-name\">String<\/span> errorCode <span class=\"token operator\">=<\/span> <span class=\"token string\">\"Unknown_Exception\"<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token keyword\">public<\/span> <span class=\"token class-name\">MyException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> message<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">String<\/span> errorCode<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token keyword\">super<\/span><span class=\"token punctuation\">(<\/span>message<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>errorCode<span class=\"token operator\">=<\/span>errorCode<span class=\"token punctuation\">;<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n\t<span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">getErrorCode<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token keyword\">return<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>errorCode<span class=\"token punctuation\">;<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u305d\u306e\u5f8c\u3001CustomExceptionExample\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<div>CustomExceptionExample.java\u306e\u65e5\u672c\u8a9e\u8a33: \u30ab\u30b9\u30bf\u30e0\u4f8b\u5916\u306e\u4f8b.java<\/div>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">package<\/span> <span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>scdev<span class=\"token punctuation\">.<\/span>exceptions<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>io<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">FileInputStream<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>io<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">FileNotFoundException<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>io<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">IOException<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>io<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">InputStream<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">CustomExceptionExample<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">MyException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<span class=\"token function\">processFile<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"file.txt\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">MyException<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<span class=\"token function\">processErrorCodes<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n\t<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">processErrorCodes<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">MyException<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">MyException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token keyword\">switch<\/span> <span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span><span class=\"token function\">getErrorCode<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<span class=\"token keyword\">case<\/span> <span class=\"token string\">\"BAD_FILE_TYPE\"<\/span><span class=\"token operator\">:<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Bad File Type, notify user\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token keyword\">throw<\/span> e<span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token keyword\">case<\/span> <span class=\"token string\">\"FILE_NOT_FOUND_EXCEPTION\"<\/span><span class=\"token operator\">:<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"File Not Found, notify user\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token keyword\">throw<\/span> e<span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token keyword\">case<\/span> <span class=\"token string\">\"FILE_CLOSE_EXCEPTION\"<\/span><span class=\"token operator\">:<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"File Close failed, just log it.\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token keyword\">break<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token keyword\">default<\/span><span class=\"token operator\">:<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Unknown exception occured, lets log it for further debugging.\"<\/span> <span class=\"token operator\">+<\/span> e<span class=\"token punctuation\">.<\/span><span class=\"token function\">getMessage<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\te<span class=\"token punctuation\">.<\/span><span class=\"token function\">printStackTrace<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n\t<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">processFile<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> file<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">MyException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token class-name\">InputStream<\/span> fis <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\t<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\tfis <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">FileInputStream<\/span><span class=\"token punctuation\">(<\/span>file<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">FileNotFoundException<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">MyException<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span><span class=\"token function\">getMessage<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"FILE_NOT_FOUND_EXCEPTION\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>fis <span class=\"token operator\">!=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> fis<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">IOException<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t\t<span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">MyException<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">.<\/span><span class=\"token function\">getMessage<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"FILE_CLOSE_EXCEPTION\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token punctuation\">}<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u79c1\u305f\u3061\u306f\u3001\u7570\u306a\u308b\u30e1\u30bd\u30c3\u30c9\u304b\u3089\u5f97\u308b\u7570\u306a\u308b\u7a2e\u985e\u306e\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306b\u3001\u5225\u306e\u65b9\u6cd5\u3092\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306b\u901a\u77e5\u3057\u305f\u304f\u306a\u3044\u5834\u5408\u3001\u3044\u304f\u3064\u304b\u306f\u6d88\u8cbb\u3055\u308c\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u554f\u984c\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u901a\u77e5\u3059\u308b\u305f\u3081\u306b\u3001\u4e00\u90e8\u306e\u30a8\u30e9\u30fc\u30b3\u30fc\u30c9\u306f\u30b9\u30ed\u30fc\u30d0\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u6587\u3092\u65e5\u672c\u8a9e\u3067\u8868\u73fe\u3057\u307e\u3059\u3002\u4e00\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306e\u307f\u63d0\u4f9b\u3057\u307e\u3059\uff1a<br \/>\n\u3053\u3053\u3067\u306f\u3001Exception\u3092\u62e1\u5f35\u3057\u3066\u3001\u3053\u306e\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u5185\u3067\u51e6\u7406\u3055\u308c\u308b\u304b\u3001\u547c\u3073\u51fa\u3057\u5143\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u8fd4\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002RuntimeException\u3092\u62e1\u5f35\u3059\u308b\u5834\u5408\u306f\u3001throws\u7bc0\u3067\u660e\u793a\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<p>\u3053\u308c\u306f\u8a2d\u8a08\u4e0a\u306e\u6c7a\u5b9a\u3067\u3057\u305f\u3002\u30c1\u30a7\u30c3\u30af\u6e08\u307f\u4f8b\u5916\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u304c\u3069\u306e\u4f8b\u5916\u304c\u4e88\u60f3\u3055\u308c\u3001\u305d\u308c\u3089\u3092\u9069\u5207\u306b\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u9069\u5207\u306a\u5bfe\u5fdc\u3092\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n<h2>Java\u3067\u306e\u4f8b\u5916\u51e6\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n<ul class=\"post-ul\">\n<li>Use Specific Exceptions \u2013 Base classes of Exception hierarchy don\u2019t provide any useful information, that\u2019s why Java has so many exception classes, such as IOException with further sub-classes as FileNotFoundException, EOFException, etc. We should always throw and catch specific exception classes so that caller will know the root cause of the exception easily and process them. This makes debugging easier and helps client applications handle exceptions appropriately.<\/li>\n<li>Throw Early or Fail-Fast \u2013 We should try to throw exceptions as early as possible. Consider the above processFile() method, if we pass the null argument to this method, we will get the following exception:<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Exception in thread &#8220;main&#8221; java.lang.NullPointerException at java.io.FileInputStream.&lt;init&gt;(FileInputStream.java:134) at java.io.FileInputStream.&lt;init&gt;(FileInputStream.java:97) at com.scdev.exceptions.CustomExceptionExample.processFile(CustomExceptionExample.java:42) at com.scdev.exceptions.CustomExceptionExample.main(CustomExceptionExample.java:12)<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u30c7\u30d0\u30c3\u30b0\u4e2d\u306f\u3001\u4f8b\u5916\u306e\u5b9f\u969b\u306e\u767a\u751f\u5834\u6240\u3092\u7279\u5b9a\u3059\u308b\u305f\u3081\u306b\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u3092\u6ce8\u610f\u6df1\u304f\u898b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5b9f\u88c5\u30ed\u30b8\u30c3\u30af\u3092\u5909\u66f4\u3057\u3066\u3001\u3053\u308c\u3089\u306e\u4f8b\u5916\u3092\u65e9\u671f\u306b\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">processFile<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> file<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">MyException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>file <span class=\"token operator\">==<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">MyException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"File name can't be null\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"NULL_FILE_NAME\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token comment\">\/\/ ... further processing<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u305d\u306e\u5f8c\u3001\u4f8b\u5916\u306e\u30b9\u30bf\u30c3\u30af\u30c8\u30ec\u30fc\u30b9\u306f\u3001\u660e\u78ba\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u5171\u306b\u3001\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u5834\u6240\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>com.scdev.exceptions.MyException: File name can&#8217;t be null at com.scdev.exceptions.CustomExceptionExample.processFile(CustomExceptionExample.java:37) at com.scdev.exceptions.CustomExceptionExample.main(CustomExceptionExample.java:12)<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ul class=\"post-ul\">\n<li>Catch Late \u2013 Since Java enforces to either handle the checked exception or to declare it in the method signature, sometimes developers tend to catch the exception and log the error. But this practice is harmful because the caller program doesn\u2019t get any notification for the exception. We should catch exceptions only when we can handle them appropriately. For example, in the above method, I am throwing exceptions back to the caller method to handle it. The same method could be used by other applications that might want to process the exception in a different manner. While implementing any feature, we should always throw exceptions back to the caller and let them decide how to handle it.<\/li>\n<li>Closing Resources \u2013 Since exceptions halt the processing of the program, we should close all the resources in finally block or use Java 7 try-with-resources enhancement to let java runtime close it for you.<\/li>\n<li>Logging Exceptions \u2013 We should always log exception messages and while throwing exceptions provide a clear message so that caller will know easily why the exception occurred. We should always avoid an empty catch block that just consumes the exception and doesn\u2019t provide any meaningful details of the exception for debugging.<\/li>\n<li>Single catch block for multiple exceptions \u2013 Most of the time we log exception details and provide a message to the user, in this case, we should use Java 7 feature for handling multiple exceptions in a single catch block. This approach will reduce our code size, and it will look cleaner too.<\/li>\n<li>Using Custom Exceptions \u2013 It\u2019s always better to define an exception handling strategy at the design time and rather than throwing and catching multiple exceptions, we can create a custom exception with an error code, and the caller program can handle these error codes. It\u2019s also a good idea to create a utility method to process different error codes and use them.<\/li>\n<li>Naming Conventions and Packaging \u2013 When you create your custom exception, make sure it ends with Exception so that it will be clear from the name itself that it\u2019s an exception class. Also, make sure to package them like it\u2019s done in the Java Development Kit (JDK). For example, IOException is the base exception for all IO operations.<\/li>\n<li>Use Exceptions Judiciously \u2013 Exceptions are costly, and sometimes it\u2019s not required to throw exceptions at all, and we can return a boolean variable to the caller program to indicate whether an operation was successful or not. This is helpful where the operation is optional, and you don\u2019t want your program to get stuck because it fails. For example, while updating the stock quotes in the database from a third-party web service, we may want to avoid throwing exceptions if the connection fails.<\/li>\n<li>Document the Exceptions Thrown \u2013 Use Javadoc @throws to clearly specify the exceptions thrown by the method. It\u2019s very helpful when you are providing an interface for other applications to use.<\/li>\n<\/ul>\n<h2>\u7d50\u8ad6<\/h2>\n<p>\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u306b\u3064\u3044\u3066\u5b66\u3073\u307e\u3057\u305f\u3002throw\u3068throws\u306b\u3064\u3044\u3066\u5b66\u3073\u307e\u3057\u305f\u3002\u307e\u305f\u3001try\uff08\u304a\u3088\u3073try-with-resources\uff09\u3001catch\u3001finally\u30d6\u30ed\u30c3\u30af\u306b\u3064\u3044\u3066\u3082\u5b66\u3073\u307e\u3057\u305f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4ee5\u4e0b\u306f\u65e5\u672c\u8a9e\u3067\u81ea\u7136\u306a\u8868\u73fe\u3067\u306e\u30d1\u30e9\u30d5\u30ec\u30fc\u30ba\u3067\u3059\uff08\u4e00\u3064\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u307f\uff09\uff1a \u30a4\u30f3\u30c8\u30ed\u30c0\u30af\u30b7\u30e7\u30f3 \u4f8b\u5916\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u767a\u751f\u3057\u3001\u901a\u5e38\u306e\u30d5\u30ed\u30fc\u3092\u59a8\u3052\u308b\u30a8\u30e9\u30fc\u30a4\u30d9\u30f3\u30c8\u3067\u3059\u3002Java\u3067\u306f\u3001Java\u4f8b\u5916\u51e6\u7406\u3068\u3057\u3066\u77e5\u3089\u308c\u308b\u4f8b\u5916\u30b7\u30ca [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[26,61],"class_list":["post-200","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-26","tag-61"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406 - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/ja\/blog\/java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\" \/>\n<meta property=\"og:description\" content=\"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/ja\/blog\/java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-08T10:41:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T12:36:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/656469c0daa94e2bdf7b55ee\/25-0.png\" \/>\n<meta name=\"author\" content=\"\u967d, \u5411\u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u967d, \u5411\u5b87\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"33\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/\",\"name\":\"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\"},\"datePublished\":\"2023-10-08T10:41:15+00:00\",\"dateModified\":\"2025-07-31T12:36:10+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/4aef6196128551a0f5d66db46c42866c\"},\"description\":\"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/ja\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/4aef6196128551a0f5d66db46c42866c\",\"name\":\"\u967d, \u5411\u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ad96b120e219751fa368cbd7d2c48ca01b59185e6ed394449bac72614a760bf3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ad96b120e219751fa368cbd7d2c48ca01b59185e6ed394449bac72614a760bf3?s=96&d=mm&r=g\",\"caption\":\"\u967d, \u5411\u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/ja\/blog\/author\/hinatasora\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406 - Blog - Silicon Cloud","description":"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/ja\/blog\/java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\/","og_locale":"ja_JP","og_type":"article","og_title":"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406","og_description":"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","og_url":"https:\/\/www.silicloud.com\/ja\/blog\/java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-10-08T10:41:15+00:00","article_modified_time":"2025-07-31T12:36:10+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/656469c0daa94e2bdf7b55ee\/25-0.png"}],"author":"\u967d, \u5411\u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"\u967d, \u5411\u5b87","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"33\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/","url":"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/","name":"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website"},"datePublished":"2023-10-08T10:41:15+00:00","dateModified":"2025-07-31T12:36:10+00:00","author":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/4aef6196128551a0f5d66db46c42866c"},"description":"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406\u3092\u5206\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\u3002\u5b9f\u8df5\u7684\u306a\u4f8b\u3068\u30b3\u30fc\u30c9\u3001\u6ce8\u610f\u70b9\u3092\u542b\u3081\u3066\u521d\u5fc3\u8005\u306b\u3082\u7406\u89e3\u3067\u304d\u308b\u3088\u3046\u8aac\u660e\u3057\u307e\u3059\u3002","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/ja\/blog\/"},{"@type":"ListItem","position":2,"name":"Java\u306b\u304a\u3051\u308b\u4f8b\u5916\u51e6\u7406"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#website","url":"https:\/\/www.silicloud.com\/ja\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/4aef6196128551a0f5d66db46c42866c","name":"\u967d, \u5411\u5b87","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ad96b120e219751fa368cbd7d2c48ca01b59185e6ed394449bac72614a760bf3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ad96b120e219751fa368cbd7d2c48ca01b59185e6ed394449bac72614a760bf3?s=96&d=mm&r=g","caption":"\u967d, \u5411\u5b87"},"url":"https:\/\/www.silicloud.com\/ja\/blog\/author\/hinatasora\/"},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.silicloud.com\/ja\/blog\/java%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e4%be%8b%e5%a4%96%e5%87%a6%e7%90%86\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/comments?post=200"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/200\/revisions"}],"predecessor-version":[{"id":37621,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/posts\/200\/revisions\/37621"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/media?parent=200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/categories?post=200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/ja\/blog\/wp-json\/wp\/v2\/tags?post=200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}