3 * Copyright © 2014 František Kučera (frantovo.cz)
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package cz.frantovo.priklady.raii;
22 * @author Ing. František Kučera (frantovo.cz)
24 public class Zdroj implements AutoCloseable {
26 private final String název;
27 private final boolean chybaVytváření;
28 private final boolean chybaDělání;
29 private final boolean chybaZavírání;
31 public Zdroj(String název, boolean chybaVytváření, boolean chybaDělání, boolean chybaZavírání) throws ChybaVytváření {
33 System.err.println("Vytváříme: " + this + " chyba=" + chybaVytváření);
34 this.chybaVytváření = chybaVytváření;
35 this.chybaDělání = chybaDělání;
36 this.chybaZavírání = chybaZavírání;
38 if (this.chybaVytváření) {
39 throw new ChybaVytváření(this);
43 public void něcoDělej() throws ChybaDělání {
44 System.err.println("Něco děláme: " + this + " chyba=" + chybaDělání);
47 throw new ChybaDělání(this);
52 public void close() throws ChybaZavírání {
53 System.err.println("Zavíráme: " + this + " chyba=" + chybaZavírání);
56 throw new ChybaZavírání(this);
61 protected void finalize() throws Throwable {
62 System.err.println("Finalizujeme: " + this);
66 public String toString() {
67 return getClass().getSimpleName() + " [" + název + "]";