在 Java 中捕获 nullpointerexception [已关闭]

2022-09-01 15:01:33

我尝试使用try-catch块来捕获,但以下程序仍然给出错误。我是否做错了什么,或者有没有其他方法可以在以下程序中捕获。任何帮助都非常感谢。NullPointerExceptionNullPointerException

public class Circular_or_not 
{

    /**
     * @param args
     */
    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
        try
        {
            LinkedListNode[] nodes = new LinkedListNode[10];            
            for (int i = 0; i < 10; i++) 
            {
                nodes[i] = new LinkedListNode(i, null, i > 0 ? nodes[i - 1] : null);
            }

            // Create loop;
            // nodes[9].next = nodes[3];
            Boolean abc= Check_Circular(nodes[0]);
            System.out.print(abc);
        }
        catch(NullPointerException e)
        {
            System.out.print("NullPointerException caught");
        }

    }

    public static boolean Check_Circular(LinkedListNode head) 
    {       
            LinkedListNode n1 = head;
            LinkedListNode n2 = head; 

            // Find meeting point
            while (n2.next != null)
            { 
                n1 = n1.next; 
                n2 = n2.next.next; 
                if (n1 == n2) 
                { 
                    return true;
                }
            }
            return false;
    }

}

答案 1

NullPointerException是一个运行时异常,不建议捕获它,而是避免它:

if(someVariable != null) someVariable.doSomething();
else
{
    // do something else
}

答案 2

正如在另一个答案中已经说过的那样,不建议捕获NullPointerException。但是,您绝对可以捕获它,如以下示例所示。

public class Testclass{

    public static void main(String[] args) {
        try {
            doSomething();
        } catch (NullPointerException e) {
            System.out.print("Caught the NullPointerException");
        }
    }

    public static void doSomething() {
        String nullString = null;
        nullString.endsWith("test");
    }
}

虽然可以捕获NPE,但您绝对不应该这样做,而是解决初始问题,这是Check_Circular方法。


推荐