Wie Runtime werfen ( „nicht finden können, das Symbol“)
-
25-09-2019 - |
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: - (
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.
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);