Ver código fonte

Fixed the null child check to throw IllegalArgumentException instead of NullPointerException
because user code should never throw NullPointerException.
Also made trying to add a child to itself an error instead of a no-op. Attempting
to do something like guiNode.attachChild(guiNode) will now throw an IllegalArgumentException.

Paul Speed 5 anos atrás
pai
commit
c73fd99dd6
1 arquivos alterados com 7 adições e 4 exclusões
  1. 7 4
      jme3-core/src/main/java/com/jme3/scene/Node.java

+ 7 - 4
jme3-core/src/main/java/com/jme3/scene/Node.java

@@ -345,10 +345,13 @@ public class Node extends Spatial {
      * @throws NullPointerException if child is null.
      */
     public int attachChildAt(Spatial child, int index) {
-        if (child == null)
-            throw new NullPointerException();
-
-        if (child.getParent() != this && child != this) {
+        if (child == null) {
+            throw new IllegalArgumentException("child cannot be null");
+        }
+        if (child == this) {
+            throw new IllegalArgumentException("Cannot add child to itself");
+        }            
+        if (child.getParent() != this) {
             if (child.getParent() != null) {
                 child.getParent().detachChild(child);
             }