Frage

Ich versuche, eine Ausnahme in meinem Code so zu werfen:

throw RuntimeException(msg);

Aber wenn ich in NetBeans baue ich diesen Fehler:

C:\....java:50: cannot find symbol
symbol  : method RuntimeException(java.lang.String)
location: class ...
        throw RuntimeException(msg);
1 error

Muss ich Import etwas? Bin Rechtschreibfehler ich es? Ich bin sicher, muss ich etwas Dummes tun: - (

War es hilfreich?

Lösung

throw new RuntimeException(msg);

Sie müssen die new drin. Es ist eine Instanz zu schaffen und werfen es, keine Methode aufrufen.

Andere Tipps

Ein Exception ist ein Object wie jede andere in Java. Sie müssen die new Schlüsselwort verwenden, um einen neuen Exception zu erstellen, bevor Sie es throw können.

throw new RuntimeException();

Optional können Sie auch Folgendes tun:

RuntimeException e = new RuntimeException();
throw e;

Beide Code-Schnipsel sind gleichwertig.

Link zu den Anleitungen auf Vollständigkeit.

Wie alle anderen gesagt hat, instanziiert das Objekt, bevor es zu werfen.

Ich wollte nur ein Bit hinzuzufügen; es ist unglaublich selten eine Runtime zu werfen. Es wäre für Code in der API normal eine Unterklasse von dieser zu werfen, aber normalerweise würde Anwendungscode Exception werfen, oder etwas, das Exception erstreckt aber nicht Runtime.

Und im Nachhinein, verpasste ich den Grund Hinzufügen Warum verwenden Sie Exception statt Runtime; @Jay, in dem Kommentar unten, in dem nützlichen Bit hinzugefügt. Runtime ist keine geprüfte Ausnahme;

  • Die Methode Unterschrift muss nicht erklären, dass ein Runtime geworfen werden kann.
  • Aufrufer dieser Methode sind nicht erforderlich, um die Ausnahme zu fangen, oder es in irgendeiner Weise acknowlege.
  • Entwickler, die später versuchen, Ihren Code zu verwenden, wird dieses Problem nicht antizipieren, wenn sie genau hinschauen, und es wird die Wartungslast des Codes zu erhöhen.

Sie werden es instanziiert haben, bevor Sie es werfen

throw new RuntimeException(arg0) 

PS: Intrestingly genug die Netbeans IDE bereits darauf hingewiesen haben sollte, dass der Kompilierung Fehler

throw new RuntimeException(msg); // notice the "new" keyword

Sie müssen die Instanz des Runtime zu schaffen, new die gleiche Art und Weise verwenden Sie würden eine Instanz von den meisten anderen Klassen zu erstellen:

throw new RuntimeException(msg);

Nur für andere. Sicher sein, es ist neu Runtime, nicht neu RuntimeErrorException, die Fehler als Argument muss

throw new RuntimeException(msg);

im Gegensatz zu allen anderen Ausnahmen denke ich Runtime derjenige ist, der nicht nur das Programm wird abgewürgt, aber es kann immer noch weiterlaufen und erholen sich nur ein paar Ausnahme Linien ausdrucken? korrigieren Sie mich, wenn ich falsch bin.

mit neuem Schlüsselwort wir immer eine Instanz (neues Objekt) erstellen und wirft es, nicht genannt Methode

throw new RuntimeException("Your Message");

You need the new in there. It's creating an instance and throwing it, not calling a method.

int no= new Scanner().nextInt();   // we crate an instance using new keyword and throwing it 

mit neuen Keyword-Speicher sauber [da die Verwendung und werfen]

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {

        //do your work here..
    }
}, 1000);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top