Path: csiph.com!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Martin Gregorie Newsgroups: comp.lang.java.programmer Subject: Re: Way to avoid repeating to catch the same exception in overridden method Date: Mon, 19 Oct 2015 12:26:58 +0000 (UTC) Organization: A noiseless patient Spider Lines: 61 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Date: Mon, 19 Oct 2015 12:26:58 +0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="e5160e2be48f1ea550cf61512446f525"; logging-data="12157"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18D5+Zh/bgYHKfIBicUUFEZKsh/nc4lGk0=" User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2) Cancel-Lock: sha1:v2rgzqdK9RheEykNLMZr6kDg+1I= Xref: csiph.com comp.lang.java.programmer:32900 On Mon, 19 Oct 2015 01:02:07 -0700, mike wrote: > Hi, > > > We have the current implementation in our overridden toString() method: > > public String toString() { > return "firstName=" + res.getFirstName() + "{" + > "lastName=" + res.getLastName() + ", " + > "address=" + res.getAddress() + "/" + "***" + ", " + > "zipCode=" + resource.getZipCode() + "}"; > } > > > > Each get can throw an IllegalArgumentExcepion so we need to replace the > value with an empty String if it happens( to avoid that our user in this > case should see an IllegalArgumentException ). > > My question is if there is a more efficient way to override toString() > than: > I'd probably use a StringBuilder: public String toString() { StringBuilder sb = new StringBuilder(); sb.append("firstName="); sb.append((res.getFirstName() == null ? "" : res.getFirstName()); sb.append("{lastName="); sb.append((res.getLastName() == null ? "" : res.getLastName())); sb.append(", address="); sb.append((res.getAddress() == null ? "" : res.getAddress()); sb.append("/***, zipCode=")); sb.append((resource.getZipCode() == null ? "" : resource.getZipCode()); sb.append("}") return sb.toString(); } or a String.format() method: public String toString() { String s = s.format("firstName=%s{lastName=%s, address="%s/***, zipCode=%s}", (res.getFirstName() == null ? "" : res.getFirstName(), (res.getLastName() == null ? "" : res.getLastName(), (res.getAddress() == null ? "" : res.getAddress(), (resource.getZipCode() == null ? "" : resource.getZipCode()); return s; } both using the conditional operator to avoid try..catch constructs. These may not be more efficient, but are certainly easier to read and more concise, particularly the String.format() statement. -- martin@ | Martin Gregorie gregorie. | Essex, UK org |