{"id":259420,"date":"2015-06-16T13:53:02","date_gmt":"2015-06-16T09:53:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=259420"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=259420","title":{"rendered":"\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f try-with-resources"},"content":{"rendered":"<p>     \t\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f try-with-resources, \u0438\u043b\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044f \u0444\u0438\u043a\u0441\u0438\u043b \u0431\u0430\u0433 \u0438 \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0448\u043b\u043e.<\/p>\n<h1>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h1>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/889\/33d\/327\/88933d32723e4e5ab03d1b39ac38902a.png\" alt=\"PITest\" align=\"left\"\/>\u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 backlog \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u0447\u0442\u0438 \u043e\u043f\u0443\u0441\u0442\u0435\u043b, \u0438 \u0432\u0432\u0435\u0440\u0445 \u0432\u0441\u043f\u043b\u044b\u043b\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u0437\u0432\u0443\u0447\u0430\u043b\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0438\u043d\u0442\u0440\u0438\u0433\u0443\u044e\u0449\u0435: \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043c\u0443\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"http:\/\/pitest.org\">PITest<\/a>. \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 <a href=\"http:\/\/habrahabr.ru\/post\/139337\/\">\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440<\/a> \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (\u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438). \u041f\u0435\u0440\u0435\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0441 \u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u041f\u0440\u0438\u0437\u043d\u0430\u044e\u0441\u044c, \u0447\u0442\u043e \u0438\u0434\u0435\u0435\u0439 \u043c\u0443\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u0437\u0430\u0433\u043e\u0440\u0435\u043b\u0441\u044f. \u041f\u043e\u0447\u0442\u0438 \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u043a\u043e\u0434\u0430 \u2014 \u043e\u043d\u043e \u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442! \u042f \u0431\u0435\u0437 \u043f\u0440\u043e\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u044f\u043b\u0441\u044f \u0437\u0430 \u0434\u0435\u043b\u043e. \u041d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u043b\u043e\u0434\u043e\u0439, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u2014 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u044b\u0440\u043e\u0439: \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0448\u0430\u043c\u0430\u043d\u0438\u0442\u044c \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 maven\u2019\u0430, \u0442\u0430\u043c \u2014 \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f Sonar\u2019\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0432\u0441\u0435 \u0436\u0435 \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0441\u043e\u0442\u043d\u0438 \u0432\u044b\u0436\u0438\u0432\u0448\u0438\u0445 \u043c\u0443\u0442\u0430\u0446\u0438\u0439! \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435 \u043d\u0430 \u043d\u0430\u0448\u0435\u043c build-\u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<p>  \u0417\u0430\u0441\u0443\u0447\u0438\u0432 \u0440\u0443\u043a\u0430\u0432\u0430 \u044f \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043b\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0443. \u0412 \u043e\u0434\u043d\u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u0445 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 \u0437\u0430\u0433\u043b\u0443\u0448\u0435\u043a, \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u043e\u0433\u0438\u043a\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0447\u0442\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u0430\u0432\u0438\u043c, \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u043c, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0448\u0435\u043b, \u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u0436\u0438\u0432\u0448\u0438\u0445 \u043c\u0443\u0442\u0430\u0446\u0438\u0439 \u0443\u0431\u044b\u0432\u0430\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u0430: PIT \u0434\u0430\u0432\u0430\u043b \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 \u0431\u043b\u043e\u043a\u0435 <a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/essential\/exceptions\/tryResourceClose.html\">try-with-resources<\/a>. \u041d\u0435\u0434\u043e\u043b\u0433\u0438\u0435 \u043f\u043e\u0438\u0441\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e <a href=\"https:\/\/github.com\/hcoles\/pitest\/issues\/48\">\u0431\u0430\u0433 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d<\/a>, \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d. \u0427\u0442\u043e \u0436, \u043a\u043e\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0442. \u041e\u0442 \u0447\u0435\u0433\u043e \u0431\u044b \u043d\u0435 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u043d\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0432 \u0447\u0435\u043c \u0436\u0435 \u0434\u0435\u043b\u043e?<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<h1>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u0445<\/h1>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/e31\/9b6\/a55\/e319b6a55aa64370a5a27d5260cb86ca.png\" alt=\"TryExample\" \/><\/div>\n<p>  \u042f \u043d\u0430\u043a\u0438\u0434\u0430\u043b <a href=\"https:\/\/github.com\/artspb\/try-with-resources-examples\/blob\/master\/src\/main\/java\/me\/artspb\/pitest\/examples\/twr\/example1\/TryExample.java\">\u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/a>, \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442 \u043a \u043d\u0435\u043c\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b PITest. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0435\u0440\u0435\u0434 \u0432\u0430\u043c\u0438: \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0439 \u2014 \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0432\u044b\u0436\u0438\u0432\u0448\u0438\u0445 \u043c\u0443\u0442\u0430\u0446\u0438\u0439, \u0434\u0435\u0441\u044f\u0442\u044c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u201c}\u201d. \u0412\u044b\u0437\u043e\u0432\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <i>close<\/i> \u0438 <i>addSupressed<\/i> \u043d\u0430\u0432\u043e\u0434\u044f\u0442 \u043d\u0430 \u043c\u044b\u0441\u043b\u044c, \u0447\u0442\u043e \u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0430 try-with-resources \u043a\u043e\u0434. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u044d\u0442\u0443 \u0434\u043e\u0433\u0430\u0434\u043a\u0443, \u044f \u0440\u0435\u0448\u0438\u043b \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c class-\u0444\u0430\u0439\u043b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f <a href=\"http:\/\/jd.benow.ca\">JD-GUI<\/a>, \u0445\u043e\u0442\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u0431\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 <a href=\"https:\/\/www.jetbrains.com\/idea\/\">IntelliJ IDEA 14<\/a>.<\/p>\n<pre><code class=\"java\">public static void main(String[] args) throws IOException {     ByteArrayOutputStream baos = new ByteArrayOutputStream();     Throwable var2 = null;     try {         baos.flush();     } catch (Throwable var11) {         var2 = var11;         throw var11;     } finally {         if (baos != null) {             if (var2 != null) {                 try {                     baos.close();                 } catch (Throwable var10) {                     var2.addSuppressed(var10);                 }             } else {                 baos.close();             }         }     } }<\/code><\/pre>\n<p>  \u0414\u043e\u0433\u0430\u0434\u043a\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0430\u0441\u044c, \u043d\u043e \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441: \u043a\u0430\u043a \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 try-with-resources \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0438\u0441\u044c \u0432 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0441\u0442\u0440\u043e\u043a try-catch-finally?  <a href=\"http:\/\/habrahabr.ru\/users\/gvsmirnov\/\" class=\"user_link\">gvsmirnov<\/a> <a href=\"http:\/\/habrahabr.ru\/post\/143237\/\">\u0437\u0430\u0432\u0435\u0449\u0430\u043b \u043d\u0430\u043c<\/a> \u0432 \u043b\u044e\u0431\u043e\u0439 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 <a href=\"http:\/\/hg.openjdk.java.net\/jdk7u\/jdk7u\/langtools\/file\/4af9a5de2a39\">OpenJDK<\/a>. \u042d\u0442\u043e \u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u043b.<\/p>\n<p>  \u0412\u0435\u0441\u044c \u043a\u043e\u0434, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0439\u0441\u044f \u043a \u0437\u0430\u0434\u0430\u0447\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 try-with-resources, \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043b\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 1428 \u0438 1580 \u043a\u043b\u0430\u0441\u0441\u0430 <a href=\"http:\/\/hg.openjdk.java.net\/jdk7u\/jdk7u\/langtools\/file\/4af9a5de2a39\/src\/share\/classes\/com\/sun\/tools\/javac\/comp\/Lower.java\">Lower<\/a>. Javadoc \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430: \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043c\u0430\u0433\u0438\u0438, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430. \u0412\u0441\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0438\u0438 \u0441 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jls\/se7\/html\/jls-14.html#jls-14.20.3\">JLS 14.20.3<\/a>.<\/p>\n<p>  \u0421 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043c\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0434 \u0438 \u043a\u0430\u043a \u043e\u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430. \u041f\u043e\u043a\u043e\u043f\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445, \u044f \u0432\u044b\u044f\u0441\u043d\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435. PITest \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u043c, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c. \u041e\u043d \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u044b. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <a href=\"http:\/\/asm.ow2.org\">ASM<\/a>.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0439 \u0438\u0434\u0435\u0435\u0439 \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 visitGeneratedTryCatchBlock \u043a\u043b\u0430\u0441\u0441\u0430 <a href=\"http:\/\/asm.ow2.org\/asm50\/javadoc\/user\/org\/objectweb\/asm\/MethodVisitor.html\">MethodVisitor<\/a>, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043a\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u0436\u0435 <a href=\"https:\/\/github.com\/hcoles\/pitest\/blob\/e65e102ac9d512b89cd7b693e4e2238902d8b786\/pitest\/src\/main\/java\/org\/pitest\/mutationtest\/engine\/gregor\/blocks\/BlockTrackingMethodDecorator.java\">\u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430<\/a> \u0434\u043b\u044f finally-\u0431\u043b\u043e\u043a\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u044f \u0431\u044b\u043b \u0443\u0434\u0438\u0432\u043b\u0435\u043d \u0443\u0437\u043d\u0430\u0432, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u0430 visitGeneratedTryCatchBlock \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. ASM \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0434 \u043e\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c. \u0417\u0430\u0441\u0430\u0434\u0430. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u0432\u044b\u0432\u043e\u0434 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b <a href=\"http:\/\/asm.ow2.org\/asm50\/javadoc\/user\/org\/objectweb\/asm\/util\/Textifier.html\">Textifier<\/a>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0411\u0430\u0439\u0442\u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 main \u043a\u043b\u0430\u0441\u0441\u0430 TryExample<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">\/\/ access flags 0x9 public static main([Ljava\/lang\/String;)V throws java\/io\/IOException    TRYCATCHBLOCK L0 L1 L2 java\/lang\/Throwable   TRYCATCHBLOCK L3 L4 L5 java\/lang\/Throwable   TRYCATCHBLOCK L3 L4 L6 null   TRYCATCHBLOCK L7 L8 L9 java\/lang\/Throwable   TRYCATCHBLOCK L5 L10 L6 null  L11   LINENUMBER 12 L11   NEW java\/io\/ByteArrayOutputStream   DUP   INVOKESPECIAL java\/io\/ByteArrayOutputStream.&lt;init&gt; ()V   ASTORE 1  L12   ACONST_NULL   ASTORE 2  L3   LINENUMBER 13 L3   ALOAD 1   INVOKEVIRTUAL java\/io\/ByteArrayOutputStream.flush ()V  L4   LINENUMBER 14 L4   ALOAD 1   IFNULL L13   ALOAD 2   IFNULL L14  L0   ALOAD 1   INVOKEVIRTUAL java\/io\/ByteArrayOutputStream.close ()V  L1   GOTO L13  L2  FRAME FULL [[Ljava\/lang\/String; java\/io\/ByteArrayOutputStream java\/lang\/Throwable] [java\/lang\/Throwable]   ASTORE 3  L15   ALOAD 2   ALOAD 3   INVOKEVIRTUAL java\/lang\/Throwable.addSuppressed (Ljava\/lang\/Throwable;)V  L16   GOTO L13  L14  FRAME SAME   ALOAD 1   INVOKEVIRTUAL java\/io\/ByteArrayOutputStream.close ()V   GOTO L13  L5   LINENUMBER 12 L5  FRAME SAME1 java\/lang\/Throwable   ASTORE 3   ALOAD 3   ASTORE 2   ALOAD 3   ATHROW  L6   LINENUMBER 14 L6  FRAME SAME1 java\/lang\/Throwable   ASTORE 4  L10   ALOAD 1   IFNULL L17   ALOAD 2   IFNULL L18  L7   ALOAD 1   INVOKEVIRTUAL java\/io\/ByteArrayOutputStream.close ()V  L8   GOTO L17  L9  FRAME FULL [[Ljava\/lang\/String; java\/io\/ByteArrayOutputStream java\/lang\/Throwable T java\/lang\/Throwable] [java\/lang\/Throwable]   ASTORE 5  L19   ALOAD 2   ALOAD 5   INVOKEVIRTUAL java\/lang\/Throwable.addSuppressed (Ljava\/lang\/Throwable;)V  L20   GOTO L17  L18  FRAME SAME   ALOAD 1   INVOKEVIRTUAL java\/io\/ByteArrayOutputStream.close ()V  L17  FRAME SAME   ALOAD 4   ATHROW  L13   LINENUMBER 15 L13  FRAME FULL [[Ljava\/lang\/String;] []   RETURN  L21   LOCALVARIABLE x2 Ljava\/lang\/Throwable; L15 L16 3   LOCALVARIABLE x2 Ljava\/lang\/Throwable; L19 L20 5   LOCALVARIABLE baos Ljava\/io\/ByteArrayOutputStream; L12 L13 1   LOCALVARIABLE args [Ljava\/lang\/String; L11 L21 0   MAXSTACK = 2   MAXLOCALS = 6<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041d\u0430\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0431\u043b\u043e\u043a try-catch-finally \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 JVM, <a href=\"http:\/\/habrahabr.ru\/post\/212759\/\">\u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u043e\u0441\u044c<\/a>. \u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0435\u0442, \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0438 goto \u043c\u0435\u0436\u0434\u0443 \u043c\u0435\u0442\u043a\u0430\u043c\u0438. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u041d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<h1>\u0410 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438\u2026<\/h1>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u0442\u044c \u0433\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u043a\u043e\u0444\u0435\u0439\u043d\u043e\u0439 \u0433\u0443\u0449\u0435, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043d\u0435\u0441\u0442\u0438 \u043c\u0435\u0442\u043a\u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u043d\u0430 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441. \u0412\u043e\u0442 \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<pre><code class=\"java\">public static void main(String[] args) throws IOException {     ByteArrayOutputStream baos = new ByteArrayOutputStream(); \/\/ L11     Throwable primaryExc = null; \/\/ L12     try {         baos.flush(); \/\/ L3     } catch (Throwable t) { \/\/ L5         primaryExc = t;         throw t;     } finally { \/\/ L6         if (baos != null) { \/\/ L4 L10             if (primaryExc != null) {                 try {                     baos.close(); \/\/ L0 L7                 } catch (Throwable suppressedExc) { \/\/ L2 L9                     primaryExc.addSuppressed(suppressedExc); \/\/ L15 L19                 } \/\/ L1 L16 L8 L20             } else {                 baos.close(); \/\/ L14 L18             }         } \/\/ L17     } \/\/ L13 }<\/code><\/pre>\n<p>  \u041e\u0442\u0447\u0435\u0442\u043b\u0438\u0432\u043e \u0432\u044b\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0443\u0442\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:  <\/p>\n<pre> L11 L12 L3         {L4  [L0 (L2 L15 L16) L1] L14} L13 L11 L12 L3 [L5 {L6] L10 [L7 (L9 L19 L20) L8] L18  L17} <\/pre>\n<p>  \u0414\u0440\u0443\u0433 \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043c\u0435\u0442\u043a\u0438, \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u0434\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0438\u043b\u0438 \u043f\u043e\u0447\u0442\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442. \u0412 \u043a\u0440\u0443\u0433\u043b\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u0442\u043e\u0434 <i>close<\/i> \u0431\u0440\u043e\u0441\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u2014 \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u0442\u043e\u0434 <i>flush<\/i>. \u0414\u0432\u0430 \u043f\u0443\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u043b\u043e\u043a finally \u0431\u044b\u043b \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0434\u0432\u0430\u0436\u0434\u044b. \u041d\u0443 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0432\u0430\u0448 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440: \u043c\u0435\u0442\u043a\u0438 \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0441\u0442\u0440\u043e\u043a\u0435 11. \u041d\u0430 \u044d\u0442\u0443 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f PITest.<\/p>\n<p>  \u0412\u043e\u0442 \u043e\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435! \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u043e\u043c \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0435, \u0434\u0430 \u0435\u0449\u0435 \u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u2014 \u043d\u0430\u043b\u0438\u0446\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0430 try-with-resources. \u0417\u0432\u0443\u0447\u0438\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0436\u0435\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u041d\u0438\u0436\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0432 \u0438\u0442\u043e\u0433\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f.<\/p>\n<pre><code class=\"java\">private static final List&lt;Integer&gt; JAVAC_CLASS_INS_SEQUENCE = Arrays.asList(   ASTORE, \/\/ store throwable   ALOAD, IFNULL, \/\/ closeable != null   ALOAD, IFNULL, \/\/ localThrowable2 != null   ALOAD, INVOKEVIRTUAL, GOTO, \/\/ closeable.close()   ASTORE, \/\/ Throwable x2   ALOAD, ALOAD, INVOKEVIRTUAL, GOTO, \/\/ localThrowable2.addSuppressed(x2)   ALOAD, INVOKEVIRTUAL, \/\/ closeable.close()   ALOAD, ATHROW); \/\/ throw throwable<\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434\u0443 \u0432 finally-\u0431\u043b\u043e\u043a\u0435.<\/p>\n<pre><code class=\"java\">} finally {     if (closeable != null) { \/\/ IFNULL         if (localThrowable2 != null) { \/\/ IFNULL             try {                 closeable.close(); \/\/ INVOKEVIRTUAL or INVOKEINTERFACE             } catch (Throwable x2) {                 localThrowable2.addSuppressed(x2); \/\/ INVOKEVIRTUAL             }         } else {             closeable.close(); \/\/ INVOKEVIRTUAL or INVOKEINTERFACE         }     } } \/\/ ATHROW<\/code><\/pre>\n<p>  \u201c\u041d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u201d, \u2014 \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u043d\u0435\u0439 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u041d\u0430\u043a\u0438\u0434\u0430\u043b \u0435\u0449\u0435 <a href=\"https:\/\/github.com\/artspb\/try-with-resources-examples\">\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432<\/a>; \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0442\u0435\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442. \u0412\u0441\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c PITest, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0436\u0438\u0432\u043e\u043c \u043a\u043e\u0434\u0435: \u0443\u043f\u0430\u043b\u0438 \u0442\u0435\u0441\u0442\u044b. \u041d\u0435 \u0442\u0435, \u0447\u0442\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b; \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<h1>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0431\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435<\/h1>\n<p>  \u0418\u0442\u0430\u043a, \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u0438\u0437 \u0441\u0442\u0430\u0434\u0438\u0438 \u201c\u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u201d \u0432 \u0441\u0442\u0430\u0434\u0438\u044e \u201c\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u201d. \u0423\u043f\u0430\u043b \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u043e\u0432. \u041e\u0442\u043a\u0430\u0442\u0438\u043b\u0441\u044f \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0441\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b <i>Java7TryWithResources.class.bin<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0431\u044b\u043b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0420\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u044f \u043d\u0435 \u043f\u043e\u0432\u0435\u0440\u0438\u043b \u0441\u0432\u043e\u0438\u043c \u0433\u043b\u0430\u0437\u0430\u043c: \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 try-with-resources \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439!<\/p>\n<p>  \u0421\u0442\u0430\u0440\u0430\u044f\u0441\u044c \u043d\u0435 \u043f\u043e\u0434\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u043d\u0438\u043a\u0435, \u044f \u043d\u0430\u0447\u0430\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b. \u0421 javac \u0438\u0437 Oracle JDK \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b, javac \u0438\u0437 OpenJDK \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u0434\u0430\u043b \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438: \u0431\u0435\u0437\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043d\u043e. \u041d\u0430\u0441\u0442\u0430\u043b \u0447\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043d\u0435 \u0431\u044b\u043b\u043e. Eclipse Compiler for Java, ECJ. \u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b, \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043b \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u2014 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0442\u043e\u0442, \u0447\u0442\u043e \u044f \u0438\u0449\u0443.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0411\u0430\u0439\u0442\u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 main \u043a\u043b\u0430\u0441\u0441\u0430 TryExample by ECJ<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\"> \/\/ access flags 0x9  public static main([Ljava\/lang\/String;)V throws java\/io\/IOException     TRYCATCHBLOCK L0 L1 L2 null    TRYCATCHBLOCK L3 L4 L4 null   L5    LINENUMBER 12 L5    ACONST_NULL    ASTORE 1    ACONST_NULL    ASTORE 2   L3    NEW java\/io\/ByteArrayOutputStream    DUP    INVOKESPECIAL java\/io\/ByteArrayOutputStream.&lt;init&gt; ()V    ASTORE 3   L0    LINENUMBER 13 L0    ALOAD 3    INVOKEVIRTUAL java\/io\/ByteArrayOutputStream.flush ()V   L1    LINENUMBER 14 L1    ALOAD 3    IFNULL L6    ALOAD 3    INVOKEVIRTUAL java\/io\/ByteArrayOutputStream.close ()V    GOTO L6   L2   FRAME FULL [[Ljava\/lang\/String; java\/lang\/Throwable java\/lang\/Throwable java\/io\/ByteArrayOutputStream] [java\/lang\/Throwable]    ASTORE 1    ALOAD 3    IFNULL L7    ALOAD 3    INVOKEVIRTUAL java\/io\/ByteArrayOutputStream.close ()V   L7   FRAME CHOP 1    ALOAD 1    ATHROW   L4   FRAME SAME1 java\/lang\/Throwable    ASTORE 2    ALOAD 1    IFNONNULL L8    ALOAD 2    ASTORE 1    GOTO L9   L8   FRAME SAME    ALOAD 1    ALOAD 2    IF_ACMPEQ L9    ALOAD 1    ALOAD 2    INVOKEVIRTUAL java\/lang\/Throwable.addSuppressed (Ljava\/lang\/Throwable;)V   L9   FRAME SAME    ALOAD 1    ATHROW   L6    LINENUMBER 15 L6   FRAME CHOP 2    RETURN    MAXSTACK = 2    MAXLOCALS = 4<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 class-\u0444\u0430\u0439\u043b. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f. \u041d\u0443 \u043d\u0438\u0447\u0435\u0433\u043e, \u0441 \u044d\u0442\u0438\u043c \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0420\u0443\u043a\u0430\u043c\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u043c, \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435.<\/p>\n<pre><code class=\"java\">public static void main(String[] paramArrayOfString) throws Throwable {     Throwable primaryExceptionVariable = null; \/\/ L5     Throwable caughtThrowableVariable = null;     try {         ByteArrayOutputStream baos = new ByteArrayOutputStream(); \/\/ L3         try {             baos.flush(); \/\/ L0         } catch (Throwable t) {             primaryExceptionVariable = t; \/\/ L2             throw primaryExceptionVariable; \/\/ L7         } finally {             if (baos != null) { \/\/ L1                 baos.close();             }         }     } catch (Throwable t) {         caughtThrowableVariable = t; \/\/ L4         if (primaryExceptionVariable == null) {             primaryExceptionVariable = caughtThrowableVariable;         } else if (primaryExceptionVariable != caughtThrowableVariable) { \/\/ L8             primaryExceptionVariable.addSuppressed(caughtThrowableVariable);         }         throw primaryExceptionVariable; \/\/ L9     } \/\/ L6 }<\/code><\/pre>\n<p>  ECJ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 try-with-resources. \u041c\u0435\u0442\u043e\u043a \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435, \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u0434\u0430 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0412\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u0434\u0443\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u044b\u0448\u0435. \u0412 <a href=\"https:\/\/github.com\/artspb\/try-with-resources-examples\/blob\/master\/src\/main\/java\/me\/artspb\/pitest\/examples\/twr\/example5\/EclipseDecompiled.java\">\u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435<\/a> \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u0430\u043a\u0430\u044f \u043c\u0430\u0442\u0440\u0435\u0448\u043a\u0430.<\/p>\n<p>  \u0427\u0442\u043e \u0436\u0435 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c? \u042f \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u0448\u0435\u043b \u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 <a href=\"https:\/\/github.com\/eclipse\/eclipse.jdt.core\/\">ECJ<\/a>. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>try<\/i> \u043f\u0440\u044f\u0447\u0435\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/eclipse\/eclipse.jdt.core\/blob\/66a32f13ddaba4c17740acde6cdc3c8efe41bd5a\/org.eclipse.jdt.core\/compiler\/org\/eclipse\/jdt\/internal\/compiler\/ast\/TryStatement.java\">TryStatement<\/a>. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432, \u0442\u043e\u043b\u044c\u043a\u043e opcodes, \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440. \u0411\u0430\u0439\u0442\u043a\u043e\u0434, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 try-with-resources, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 500 \u0438 604. \u041f\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0442\u0435\u043b\u043e \u0431\u043b\u043e\u043a\u0430 <i>try<\/i> \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u043c\u0438\u043b\u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<\/p>\n<p>  \u0422.\u043a. \u043d\u0435\u0442 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 finally-\u0431\u043b\u043e\u043a\u0430, \u0442\u043e \u043d\u0435\u0442 \u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0437-\u0437\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439. \u042d\u0442\u0438\u043c \u044f \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f. \u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0434\u043b\u044f ECJ \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<pre><code class=\"java\">private static final List&lt;Integer&gt; ECJ_INS_SEQUENCE = Arrays.asList(   ASTORE, \/\/ store throwable2   ALOAD, IFNONNULL, \/\/ if (throwable1 == null)   ALOAD, ASTORE, GOTO, \/\/ throwable1 = throwable2;   ALOAD, ALOAD, IF_ACMPEQ, \/\/ if (throwable1 != throwable2) {   ALOAD, ALOAD, INVOKEVIRTUAL, \/\/ throwable1.addSuppressed(throwable2)   ALOAD, ATHROW); \/\/ throw throwable1<\/code><\/pre>\n<p>  \u0410 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u043c java-\u043a\u043e\u0434.<\/p>\n<pre><code class=\"java\">if (throwable1 == null) { \/\/ IFNONNULL     throwable1 = throwable2; } else {     if (throwable1 != throwable2) { \/\/ IF_ACMPEQ         throwable1.addSuppressed(throwable2); \/\/ INVOKEVIRTUAL     } } \/\/ ATHROW<\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0436\u0435 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438? \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e AspectJ \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u0447\u0442\u043e \u0438 ECJ. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0442 IBM \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u0441\u043c\u043e\u0433 \u0441\u043a\u0430\u0447\u0430\u0442\u044c (\u0434\u0430 \u0438 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c). \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043c\u0430\u043b\u043e\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h1>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h1>\n<p>  \u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0443\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0434\u043b\u044f javac \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441. \u0414\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438: INVOKEVIRTUAL \u0438 INVOKEINTERFACE \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432\u044b\u0448\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0438 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439. \u041d\u0443 \u043d\u0438\u0447\u0435\u0433\u043e, \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u0438\u0442\u043e\u0433\u0435?<\/p>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0442\u0430\u043b \u043f\u0430\u0442\u0447, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u0430\u0433. \u041f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 (\u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u0442\u0435\u0441\u0442\u043e\u0432), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <a href=\"https:\/\/github.com\/hcoles\/pitest\/blob\/e65e102ac9d512b89cd7b693e4e2238902d8b786\/pitest\/src\/main\/java\/org\/pitest\/mutationtest\/engine\/gregor\/TryWithResourcesMethodVisitor.java\">TryWithResourcesMethodVisitor<\/a>. \u041f\u0440\u0438\u0437\u044b\u0432\u0430\u044e \u0432\u0441\u0435\u0445 \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>  \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u044f \u0443\u0437\u043d\u0430\u043b, \u043a\u0430\u043a\u0438\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u043b\u043e\u043a\u0430 try-with-resources. \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 try-catch-finally \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430. \u041d\u0443 \u0430 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u043c \u0441\u0442\u0430\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434 <a href=\"http:\/\/habrahabr.ru\/post\/212759\/\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0432\u044b\u0448\u0435 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443.<\/p>\n<p>  \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0433\u0434\u0435 \u043e\u0431\u043e \u0432\u0441\u0435\u043c \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u0432\u0430\u0441 \u0441\u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 <a href=\"http:\/\/habrahabr.ru\/post\/245333\/\">\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0440\u0430\u0441\u0442\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u043d\u0438\u044f<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u0410 \u0433\u0434\u0435 \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u0430 \u0438 \u043c\u043e\u0440\u0430\u043b\u044c, \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b? \u041e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0438\u0445 \u043f\u043e\u0438\u0441\u043a \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e. \u0417\u0430\u043c\u0435\u0447\u0443 \u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435, \u043f\u043e\u043a\u0430 \u043f\u0438\u0441\u0430\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0435\u0433\u043e \u043e\u0442 \u0447\u0442\u0435\u043d\u0438\u044f. \u0414\u043e \u043d\u043e\u0432\u044b\u0445 \u0432\u0441\u0442\u0440\u0435\u0447!<\/p>\n<p>  P.S. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043e\u043d\u0443\u0441\u0430 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0440\u0430\u043d\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 try-with-resources \u043e\u0442 Joshua Bloch.<\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ru\">\n<p lang=\"en\" dir=\"ltr\">Stumbled on original ARM block (try-with-resources) proposals, if anyone&#39;s curious. V1: <a href=\"https:\/\/t.co\/Qngv2STN1W\">https:\/\/t.co\/Qngv2STN1W<\/a>, V2: <a href=\"https:\/\/t.co\/YiR1RvyZWg\">https:\/\/t.co\/YiR1RvyZWg<\/a><\/p>\n<p>&mdash; Joshua Bloch (@joshbloch) <a href=\"https:\/\/twitter.com\/joshbloch\/status\/609530002170904576\">13 \u0438\u044e\u043d\u044f 2015<\/a><\/p><\/blockquote>\n<p> <script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><br \/>  \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u0431\u0430\u0432\u043d\u043e.<\/p>\n<pre><code class=\"java\">{     final LocalVariableDeclaration ;     boolean #suppressSecondaryException = false;     try Block catch (final Throwable #t) {         #suppressSecondaryException = true;         throw #t;     } finally {         if (#suppressSecondaryException)             try { localVar.close(); } catch(Exception #ignore) { }         else             localVar.close();     } }<\/code><\/pre>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/260417\/\"> http:\/\/habrahabr.ru\/post\/260417\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>     \t\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f try-with-resources, \u0438\u043b\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044f \u0444\u0438\u043a\u0441\u0438\u043b \u0431\u0430\u0433 \u0438 \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0448\u043b\u043e.<\/p>\n<h1>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h1>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/889\/33d\/327\/88933d32723e4e5ab03d1b39ac38902a.png\" alt=\"PITest\" align=\"left\"\/>\u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 backlog \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u0447\u0442\u0438 \u043e\u043f\u0443\u0441\u0442\u0435\u043b, \u0438 \u0432\u0432\u0435\u0440\u0445 \u0432\u0441\u043f\u043b\u044b\u043b\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u041e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u0437\u0432\u0443\u0447\u0430\u043b\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0438\u043d\u0442\u0440\u0438\u0433\u0443\u044e\u0449\u0435: \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043c\u0443\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"http:\/\/pitest.org\">PITest<\/a>. \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u0435\u0441\u044c\u043c\u0430 <a href=\"http:\/\/habrahabr.ru\/post\/139337\/\">\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440<\/a> \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (\u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438). \u041f\u0435\u0440\u0435\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0441 \u043d\u0435\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u041f\u0440\u0438\u0437\u043d\u0430\u044e\u0441\u044c, \u0447\u0442\u043e \u0438\u0434\u0435\u0435\u0439 \u043c\u0443\u0442\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f \u0437\u0430\u0433\u043e\u0440\u0435\u043b\u0441\u044f. \u041f\u043e\u0447\u0442\u0438 \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u043a\u043e\u0434\u0430 \u2014 \u043e\u043d\u043e \u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442! \u042f \u0431\u0435\u0437 \u043f\u0440\u043e\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u044f\u043b\u0441\u044f \u0437\u0430 \u0434\u0435\u043b\u043e. \u041d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u043b\u043e\u0434\u043e\u0439, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u2014 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u044b\u0440\u043e\u0439: \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0448\u0430\u043c\u0430\u043d\u0438\u0442\u044c \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 maven\u2019\u0430, \u0442\u0430\u043c \u2014 \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f Sonar\u2019\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0432\u0441\u0435 \u0436\u0435 \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0441\u043e\u0442\u043d\u0438 \u0432\u044b\u0436\u0438\u0432\u0448\u0438\u0445 \u043c\u0443\u0442\u0430\u0446\u0438\u0439! \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435 \u043d\u0430 \u043d\u0430\u0448\u0435\u043c build-\u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<p>  \u0417\u0430\u0441\u0443\u0447\u0438\u0432 \u0440\u0443\u043a\u0430\u0432\u0430 \u044f \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043b\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0443. \u0412 \u043e\u0434\u043d\u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u0445 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 \u0437\u0430\u0433\u043b\u0443\u0448\u0435\u043a, \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u043e \u043b\u043e\u0433\u0438\u043a\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0447\u0442\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u0430\u0432\u0438\u043c, \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u043c, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0448\u0435\u043b, \u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u0436\u0438\u0432\u0448\u0438\u0445 \u043c\u0443\u0442\u0430\u0446\u0438\u0439 \u0443\u0431\u044b\u0432\u0430\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u0430: PIT \u0434\u0430\u0432\u0430\u043b \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 \u0431\u043b\u043e\u043a\u0435 <a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/essential\/exceptions\/tryResourceClose.html\">try-with-resources<\/a>. \u041d\u0435\u0434\u043e\u043b\u0433\u0438\u0435 \u043f\u043e\u0438\u0441\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e <a href=\"https:\/\/github.com\/hcoles\/pitest\/issues\/48\">\u0431\u0430\u0433 \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d<\/a>, \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d. \u0427\u0442\u043e \u0436, \u043a\u043e\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0442. \u041e\u0442 \u0447\u0435\u0433\u043e \u0431\u044b \u043d\u0435 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u043d\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0432 \u0447\u0435\u043c \u0436\u0435 \u0434\u0435\u043b\u043e?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-259420","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/259420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=259420"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/259420\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=259420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=259420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=259420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}