如果静态变量尚未初始化,则抛出异常

时间:2014-04-12 12:48:10

标签: java exception nullpointerexception

我在static中有concatString(String source)方法class,其中String参数为“来源”。同一个类有另一个static string变量“target”。 “target”字符串在另一个名为init()的静态方法中初始化。现在,如果用户在调用concatString()方法之前调用init()方法,则需要抛出exception

任何人都应该exception throw concatString()来自IIlegalArgumentException 我认为我们不能抛出null pointer exception,因为这个论点没有错。它应该是{{1}}吗?

3 个答案:

答案 0 :(得分:2)

java.lang.IllegalStateException可能会帮助您


PS。 另见static Initializers in java。也许它可以帮助您初始化静态字段。

答案 1 :(得分:0)

不要要求为您的班级用户拨打init()。要么在课程构建期间调用init()中的代码,要么在调用init()时调用concatString(),如下所示:

public static String concatString(String source)
{
    init();
    //concat string code.
    return concatedString;
}

答案 2 :(得分:0)

您应该为自己创建一个自定义例外 这将使您的例外在您的上下文中保留一些信息。

class MyConcatException extends Exception{
    private static final long serialVersionUID = 1L;

    public MyConcatException(String message){
        super(message);
    }
}

用法:

public void MyMethod() throws MyConcatException
    {
        //do something
        throw new MyConcatException("target is not init");
    }

你会得到:

MyConcatException: target is not init
    at Main.MyMethod(Main.java:16)
    at Main.main(Main.java:6)