{"componentChunkName":"component---src-templates-post-template-jsx","path":"/history/posts/2020-10-12--001--03","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":"682f2d6f-7764-53d3-a00e-a73fefd3a3ea","html":"<h2>아이템71) 필요 없는 검사 예외 사용은 피하라</h2>\n<p>API 호출자가 예외 상황에서 복구할 방법이 없다면 비검사 예외를 던지자.<br>\n복구가 가능하고 호출자가 그 처리를 해주길 바란다면, 우선 옵셔널을 반환해도 될지 고민하자.<br>\n옵셔널만으로는 상황을 처리하기에 충분한 정보를 제공할 수 없을 때만 검사 에외를 던지자.  </p>\n<h3>검사 예외 회피 방법</h3>\n<ul>\n<li>적절한 결과 타입을 담은 Optional 반환<br>\n— 검사 예외를 던지는 대신, 단순히 빈 옵셔널을 반환하자<br>\n— 단점은 예외가 발생한 이유를 담을 수 없다.  </li>\n<li>검사 예외를 던지는 메서드를 2개로 쪼개 비검사 예외로 변경<br>\n단점)<br>\n— 1. none thread-safe : actionPermitted와 action 호출 사이에 객체의 상태가 변할 수 있음<br>\n— 2. actionPermitted 가 action 메소드의 작업 일부를 중복 수행한다면 성능 손해  </li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">//검사 예외를 던지는 메서드</span>\n<span class=\"token keyword\">try</span> <span class=\"token punctuation\">{</span>\n  obj<span class=\"token punctuation\">.</span><span class=\"token function\">action</span><span class=\"token punctuation\">(</span>args<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\">TheCheckedException</span> e<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span> 예외 상황에 대처\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">//상태 검사 메서드와 비검사 예외를 던지는 메서드</span>\n<span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>obj<span class=\"token punctuation\">.</span><span class=\"token function\">actionPermitted</span><span class=\"token punctuation\">(</span>args<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  obj<span class=\"token punctuation\">.</span><span class=\"token function\">action</span><span class=\"token punctuation\">(</span>args<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span> 예외 상황에 대처\n<span class=\"token punctuation\">}</span></code></pre></div>","fields":{"tagSlugs":["/tags/책리뷰/","/tags/이펙티브자바/"],"slug":"/history/posts/2020-10-12--001--03"},"frontmatter":{"title":"[책리뷰/Effective Java] 예외","tags":["책리뷰","이펙티브자바"],"date":"2020-10-12","description":"아이템71) 필요 없는 검사 예외 사용은 피하라"}}},"pageContext":{"slug":"/history/posts/2020-10-12--001--03"}},"staticQueryHashes":[]}