2016-07-15 2 views
0

Ich habe eine Methode:IntelliJ IDEA hebt nicht den Code hervor, der eine Ausnahme auslöst - wie wird sie aktiviert?

private void test() throws NullPointerException { 
     System.out.println("blabla"); 
     throw new NullPointerException(); 
    } 

die Nullpointer wirft aber wenn ich versuche, diese Methode aufzurufen:

test(); 

IntelliJ IDEA warnt mich nicht, dass es Nullpointer wirft. IntelliJ sollte mich davor warnen, oder?

Ich habe festgestellt, dass es Inspektionen in den Einstellungen -> Editor -> Inspektionen gibt, aber ich konnte diese Inspektion nicht finden.

Wie wird es eingeschaltet?

@edit

Okay, habe ich gelernt, dass ein Nullpointer Typ eine Ausnahme ist die IntelliJ nicht hervorheben, weil diese Art von kritischem Fehler ist. Andere Ausnahmen wie IOException werden hervorgehoben. Aber ist es trotzdem möglich, die NullPointerException zu aktivieren?

+0

ich nicht, warum Sie es hervorheben müssen? Du hast diesen Code geschrieben, um eine Ausnahme auszulösen, du nennst sie ... Warum sollte dich die Idee warnen? –

Antwort

3

Dank Ihrer Bearbeitung ist es einfacher, das Verhalten zu erklären, das Sie sehen. IntelliJ Flags Ausnahmen, die java.lang.RuntimeException nicht ableiten, da dies ein tatsächlicher Kompilierungsfehler ist.

Schauen wir uns die JavaDoc für Exception:

Die Klasse Exception und alle Unterklassen, die nicht auch Subklassen von Runtime sind Ausnahmen geprüft. Überprüfte Ausnahmen müssen in der throws-Klausel einer Methode oder eines Konstruktors deklariert werden, wenn sie durch die Ausführung der Methode oder des Konstruktors ausgelöst und außerhalb der Grenzen der Methode oder des Konstruktors weitergegeben werden können.

... Und die JavaDoc für Runtime:

Runtime und ihre Unterklassen sind nicht markiert Ausnahmen. Ungeprüfte Ausnahmen müssen nicht in der throws-Klausel einer Methode oder eines Konstruktors deklariert werden, wenn sie durch die Ausführung der Methode oder des Konstruktors ausgelöst und außerhalb der Grenzen der Methode oder des Konstruktors weitergegeben werden können.

Mit anderen Worten, Sie eine Runtime offen in Ihrem Code werfen, und Sie müssen nicht unbedingt sie erklären müssen, oder sie zu fangen und Ihr Compiler mit, dass vollkommen glücklich sein (obwohl Ihre API-Benutzer möglicherweise nicht sei so lustig). Auf der anderen Seite werden Ausnahmen, die RuntimeException nicht ableiten, "checked" -Ausnahmen genannt und müssen entweder als von Ihren Methoden ausgelöst deklariert oder als gefangen und behandelt werden, wenn sie entsprechend den Spezifikationen der Sprache auftreten.

(P. S., wenn Sie es noch nicht fangen hat, ist ein Nullpointerruntime. Daher ist es nicht aktiviert ist.)

+0

Da 'RuntimeException' eine Klasse und keine Schnittstelle ist, würde man sie nicht implementieren. – binoternary

+0

@binoternary Ja, im Code würden Sie 'extends', nicht' implements' verwenden. – nasukkin

1

Es ist ein IntelliJ Plugin, das Sie entdecken nicht markiert Ausnahmen helfen können. Sie können den Suchprozess so anpassen, dass Bibliotheken bei der Suche nach Bibliotheken eingeschlossen/ausgeschlossen werden. Es bietet jedoch keine Echtzeit-Inspektionen.

https://plugins.jetbrains.com/plugin/8157?pr=

Verwandte Themen