Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.java > #12951

Re: Rekursion bricht nicht ab

From Wanja Gayk <brixomatic@yahoo.com>
Newsgroups de.comp.lang.java
Subject Re: Rekursion bricht nicht ab
Date 2016-04-23 16:13 +0200
Organization Aioe.org NNTP Server
Message-ID <MPG.31859c2ad1741b659896b3@news.aioe.org> (permalink)
References (2 earlier) <dmv3g8Fngq5U2@mid.individual.net> <dmv77lFoggiU1@mid.individual.net> <dmvd9oFq327U1@mid.individual.net> <MPG.31789f5985a68ae9896b0@news.aioe.org> <dn80blF210oU1@mid.individual.net>

Show all headers | View raw


In article <dn80blF210oU1@mid.individual.net>, Christian H. Kuhn (qno-
news@qno.de) says...
> 
> Am 13.04.2016 um 19:25 schrieb Wanja Gayk:
> > Der Overhead vom Exceptionhandling ist jedenfalls in 99.9999999999999% 
> > aller Fälle kein Problem.
> 
> Ich habe visualvm dann mal eingesetzt. Mann, habe ich gelacht. Je
> nachdem, ob ich dem Profiler oder dem Sampler glaube, verbringe ich
> 65?95% der Rechenzeit im Konstruktor von drei verschiedenen Exceptions,
> wobei zwei etwa gleich viel Zeit brauchen und die dritte ein Viertel
> davon. Und es sieht so aus, dass es tatsächlich die Aufrufe sind und
> weder super(String) noch die Erstellung des String.

Das klingt ganz danach, als ob du die Exceptions nicht als "Ausnahme" 
benutzt, sondern Mittel für den regulären Kontrollfluss. Wenn Exceptions 
zur Regel werden, dann passt der Name "Exception" eigentlich nicht mehr.

Was du dort siehst, ist also in etwa so, als ob du ein extra 
Rückgabeobjekt mit Stacktrace erzeugst, immer wenn du z.B. kein 
Suchergebnis findest. Das ist eigentlich nicht das, wofür man eine 
Exception nutzen sollte.

Eine Exception ist eigentlich immer eine Sonderbedingung, Beispiel: 
Du hast ein Handelsprogramm, bei dem du checkst, ob die Ware auf Lager 
ist und wenn ja, wird es dem Kunden abgeboten, der erteilt dann den 
Auftrag die Ware vom Lager zu nehmen und ihm zu schicken. Eine Ausnahme 
baust du für den Fall ein, dass zwischen dem Bestandscheck und dem 
tatsächlichen Auftrag ein anderer Auftrag dazwischen kam, der die Ware 
vom Lager nahm. Damit würde es beim Auftrag eine Art OutOfStockException 
geben und du müsstest dem Kunden mitteilen: Sorry, zwischen unserem 
Angebot und deinem Auftrag hat ein anderer Kunde das Zeug gekauft und 
ihm anbieten das Zeug mit etwas Wartezeit trotzdem zu bestellen oder die 
Transaktion abzubrechen.

Aber für so Sachen, wie eine Suche, wo sehr oft zu erwarten ist, dass du 
nicht findest, was du suchst, ist eine Exception (Ausnahme!) nicht das 
richtige Mittel.
Dort gibt man zum Beispiel sowas, wie ein "Optional" zurück, also:
public <X extends NamedItem> Optional<X> searchByName(Iterable<X> xs, 
String name){
 for(X x : xs){
  if(x != null && Utils.equals(x.getName(), name)){
   return Optional.of(x);
  }
 }
 return Optional.empty();
}

Oder eben, wenn man den Konstruktor des Optionals umgehen muss, das 
Objekt selbst oder null.

Gruß,
-Wanja-

-- 
..Alesi's problem was that the back of the car was jumping up and down 
dangerously - and I can assure you from having been teammate to 
Jean Alesi and knowing what kind of cars that he can pull up with, 
when Jean Alesi says that a car is dangerous - it is. [Jonathan Palmer]

Back to de.comp.lang.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-08 23:28 +0200
  Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-09 16:13 +0200
    Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-10 15:41 +0200
      Re: Rekursion bricht nicht ab Peter Büttner <not_for_mail_peb@gmx.net> - 2016-04-10 16:45 +0200
        Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-10 18:28 +0200
          Re: Rekursion bricht nicht ab Wanja Gayk <brixomatic@yahoo.com> - 2016-04-13 19:25 +0200
            Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-13 21:56 +0200
              Re: Rekursion bricht nicht ab Wanja Gayk <brixomatic@yahoo.com> - 2016-04-23 16:13 +0200
              Re: Rekursion bricht nicht ab Wanja Gayk <brixomatic@yahoo.com> - 2016-04-23 16:13 +0200
                Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-23 17:31 +0200
                Re: Rekursion bricht nicht ab Wanja Gayk <brixomatic@yahoo.com> - 2016-04-25 00:53 +0200
                Re: Rekursion bricht nicht ab Wanja Gayk <brixomatic@yahoo.com> - 2016-04-25 00:56 +0200
                Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-23 19:22 +0200
            Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-14 00:42 +0200
              Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-14 09:20 +0200
              Re: Rekursion bricht nicht ab Christoph Schneegans <Christoph@Schneegans.de> - 2016-04-14 18:47 +0200
              Re: Rekursion bricht nicht ab Wanja Gayk <brixomatic@yahoo.com> - 2016-04-23 16:13 +0200
                Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-25 12:07 +0200
                Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-25 17:38 +0200
                Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-25 22:36 +0200
                Re: Rekursion bricht nicht ab Wanja Gayk <brixomatic@yahoo.com> - 2016-04-28 08:26 +0200
      Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-10 22:15 +0200
        Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-12 15:46 +0200
          Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-12 18:32 +0200
            Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-13 20:44 +0200
              Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-14 12:07 +0200
                Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-23 13:35 +0200
                Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-23 14:57 +0200
                Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-25 23:05 +0200
                Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-26 01:16 +0200
                Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-23 16:05 +0200
                Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-25 12:48 +0200
  Re: Rekursion bricht nicht ab v_borchert@despammed.com (Volker Borchert) - 2016-04-10 06:07 +0000
  Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-10 15:40 +0200
  Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-11 11:21 +0200
    Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-12 15:57 +0200
      Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-12 18:28 +0200
        Re: Rekursion bricht nicht ab "Christian H. Kuhn" <qno-news@qno.de> - 2016-04-12 23:36 +0200
          Re: Rekursion bricht nicht ab Patrick Roemer <sangamon@netcologne.de> - 2016-04-25 21:42 +0200

csiph-web