Compiler-Fehler Hilfe zu -> throw new IllegalArgumentException

zenpaticx

Mitglied
Hallo,

Vorgeschichte:
ich habe schon bei meinem Fachabitur 2 Jahre lang mit Java programmiert, aber nie so, dass ich später mal damit wirklich etwas anfangen möchte. Man könnte sagen, dass ich eher nur für die Schule gelernt habe.

Nun benötige ich Java erneut und es nicht mehr alles so hängengeblieben, wie es mir lieb wäre.

Ich hatte mir zu dem erneuten Einstieg ein Buch gekauft (früher hatte ich das "Einsteig in Java 7"-Buch, was anscheinend nicht so beliebt ist.) mit dem Namen Einführung in Java von Kai Günster.

Ganz zufrieden mit dem Buch bin ich nicht. Es scheint nicht wirklich für Einsteiger gemacht zu sein, denn anstatt mit Einsteigerthemen anzufangen, wird im Buch Code benutzt, den man so nicht einfach abtippen kann, um dann zu sehen, dass der Code - bzw. wie der Code - funktioniert.

Naja..
Ich habe mich entschlossen trotzdem einfach das Buch zu lesen - ob es etwas bringt ist die andere Sache.

Beispielcode aus dem Buch:
Java:
public static String reverse(String in){
  if (in == null)
     throw new IllegalArgumentException("Parameter in muss übergeben werden.");

.....

Nur mal so am Rand: Muss nicht eigentlich if auch in geschweifte Klammern? Ich könnte mich jetzt noch zehn weitere Stunden über andere Sachen an dem Buch, welches sich Einführung in Java schimpft, aufregen. Waren meine Erwartungen zu hoch? Muss ich erneut mit Hello World anfangen? Was für ein Buch, das mit dem Nomen Einführung betitelt ist, weicht von allen Einführungen ab? Direkt mit Methoden außerhalb der main etc.

Problem:
Code:
Java:
public class umkehren {
  public static void main(String[] args) {
  String in;
  if (in == null) {
  throw new IllegalArgumentException("Der String ist leer.");
  }
  }
}

Hier kommt der Fehler, dass in noch nicht initialisiert wurde. Das stimmt ja auch soweit, aber ist dafür nicht die Zeile 5 da? Kann ich überhaupt dieses throw new Illegal(...) benutzen, oder brauche ich dafür irgendwelche Pakete?

Ihr braucht mir hier nicht den Code schreiben, mitdem es funktionieren würde, darauf will ich selber kommen. Aber nachdem ich mich hier selber als über das Buch aufrege, habe ich keine klaren Gedanken mehr.


Danke & Gruß
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

ehe Du in Java auf eine Variable zugreifen kannst, sollte diese initialisiert sein. Der Compiler prüft dies und gibt ggf. einen Fehler aus. In diesem Fall könntest Du die Variable direkt bei der Definition initialisieren indem Du "String in = null;" schreibst.

"throw" und "new" sind Bestandteil der Java Sprache und benötigen daher kein Paket.
IllegalArgumentException ist Bestandteil von java.lang und das Paket ist immer automatisch mit eingebunden, so dass keine explizite Einbindung notwendig ist.

Mit den besten Grüßen,

Konrad
 
if muss nicht in geschweifte Klammern (kann aber natürlich trotzdem) wenn im if-Block nur eine Anweisung steht.
Solltest du Lust und/oder Geld haben in ein besseres Buch zu investieren, dann kann ich dir „Grundkurs Programmieren in Java" von Dietmar Ratz, Hanser Verlag empfehlen. Damit habe ich von 0 Kenntnissen alles selbst erarbeiten können.
 
Der Einstieg in Java ist (meiner Meinung nach) für jeden holprig, das sich Java von der Synthax her in einigen Punkten schon erheblich von anderen Sprachen abhebt. Dass man nach einer Bedingung keine geschweiften Klammern braucht, wenn nur eine Anweisung folgt, ist aber bei vielen Sprachen üblich. Deine Kritik an dem Buch ist berechtigt, wenn der Autor auf diesen Punkt nicht wenigestens mit einem Nebensatz eingeht.

Man kann Dir viele hundert Bücher empfehlen, allerdings, um Java richtig zu lernen, muss man auch von Seite 1 beginnen. Da gibt es in vielen Büchern einen kurzem Umriss über die Entstehung der Sprache. Das kann man sich schonmal reinziehen, immerhin möchtest Du mit der Sprache ja auch arbeeiten. Mit jedem Arbeitskollegen den Du hast und haben wirst, wirst Du ja auch mal private Sachen besprechen. Das schafft Vertrauen.

Und dann, nach dem Vorgeplänkel, geht es los mit dem gefürchteten "Hello World". Auch hier, abtippen, checken, lesen, verstehen.

Bei meinem Abitur haben wir Delphi benutzt. Das war damals noch open source. Leider haben wir in der Schule nie objektorientiert programmiert. Wie es jetzt ist, weiß ich nicht, abber besonders objektorientiert kann es bei Dir auch nicht gewesen sein, da Du ja grundlegende Fragen hast, die beim benutzen einer Sprache ja drin sein müssten.

Ich kann Dir zwei Sachen empfehlen. Obwohl diese schon alt sind, kann man sie dennoch gut zum Einstieg verwennden. Wenn Du damit durch bist, gehts weiter mit der berühmten Insel.

Nummer 1: Online Kurs:
http://www.gailer-net.de/

Nummer 2: Buch
Java von Kopf bis Fuß

Alles von vorn nach hinnten durchackern, dann hast Du das wichtigste drauf. Und dabei immer konzentriert bleiben, auch mal aufhören, wenn es zuviel wird und später weitermachen.
 

Neue Themen


Zurück
Oben