{"componentChunkName":"component---src-templates-post-template-jsx","path":"/history/posts/2020-10-12--001--01","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"a41414f2-942f-560f-afbb-187b6594c141","html":"<h2>아이템69) 예외는 진짜 예외 상황에만 사용하라</h2>\n<p>예외는 예외 상황에서 쓸 의도로 설계되었다.<br>\n정상적인 제어 프름에서 사용해서는 안되며, 이를 프로그래머에게 강요하는 API를 만들어서도 안된다.</p>\n<h3>예외는 일상적인 제어 흐름용으로 쓰여선 안된다.</h3>\n<p>Good 코드와 같은 표준적이고 쉽게 이해되는 관용구를 사용해라</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">//Bad</span>\n<span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">int</span> i<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span><span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span>\n    range<span class=\"token punctuation\">[</span>i<span class=\"token operator\">++</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">climb</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">catch</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">ArrayIndexOutOfBoundsException</span> e<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">//Good</span>\n<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Mountain</span> m <span class=\"token operator\">:</span> range<span class=\"token punctuation\">)</span>\n    m<span class=\"token punctuation\">.</span><span class=\"token function\">climb</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h3>정상적인 제어 흐름에서 예외를 사용할 일이 없어야 한다.</h3>\n<p>특정 상태에서만 호출할 수 있는 ‘상태 의존적’ 메서드를 제공하는 클래스는 ‘상태 검사’ 메서드도 함께 제공해야 한다. </p>\n<ul>\n<li>‘상태 의존적’ 메서드 : Iterator의 next()</li>\n<li>‘상태 검사’ 메서드 : Iterator의 hasNext()</li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/c6592f78037bf221f06266c7bcf759b4/c6d67/001--01-1.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 734px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 59.583333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAABJ0AAASdAHeZh94AAABW0lEQVQoz31SWXbDMAj0cWIBAi1p0r7X+x+LgpBcu037MUabh2Fga4xaxMCgkg3CKrVqZlYkUgBQwAk4Ye5TSkd0bESouThIKaNKz7bOY40TxFf4mb9HuhJ63ABwXPA9KxtZfZcRuQV8Xx48zrLvP2Iv9xwiLMEiG4Q4CdclSWQfqBTENcj8fpz1WC8rzipDoXv3Zo+sdM/spGBlATngV9n/luwKpbDWe9VSi5Zext6bxPZzM3WleINCkZNExAvRUTIg2o/mCZs3Umwt1u2sjZJWU/5w3yQrJPt5T0c3F36SbohRspeWwC4whS/Tnx3mmqY6+BsnD7/Hxv1bzXF4stUoErrM3Cu1m3+coH9Wa4iV3szDJuGlRS4y5tK76/Dky8vDz3k2FI6xMUJ5GlkXbf2utfeIrQ9kzlMxfY/XCStRlGweVnv0NEVOvt9uuu/7BUdZe3rZmHXm1X4Bp+Zt9bC2MMsAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001  01 1\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/c6592f78037bf221f06266c7bcf759b4/c6d67/001--01-1.png\"\n        srcset=\"/devHistoryBlog/static/c6592f78037bf221f06266c7bcf759b4/8ff5a/001--01-1.png 240w,\n/devHistoryBlog/static/c6592f78037bf221f06266c7bcf759b4/e85cb/001--01-1.png 480w,\n/devHistoryBlog/static/c6592f78037bf221f06266c7bcf759b4/c6d67/001--01-1.png 734w\"\n        sizes=\"(max-width: 734px) 100vw, 734px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<h4>상태 검사 메서드 대신 사용할 수 있는 선택지</h4>\n<ul>\n<li>Optional, 특정 값(null)\n---계속</li>\n</ul>","fields":{"tagSlugs":["/tags/책리뷰/","/tags/이펙티브자바/"],"slug":"/history/posts/2020-10-12--001--01"},"frontmatter":{"title":"[책리뷰/Effective Java] 예외","tags":["책리뷰","이펙티브자바"],"date":"2020-10-12","description":"아이템69) 예외는 진짜 예외 상황에만 사용하라"}}},"pageContext":{"slug":"/history/posts/2020-10-12--001--01"}},"staticQueryHashes":[]}