Java: startingPath as “public static final” exception

后端 未结 5 1105
天涯浪人
天涯浪人 2021-01-26 13:00

[Updated, sorry about the change but now to the real problem] I cannot include try-catch-loop there for the exception from the method getCanonicalPath(). I trie

5条回答
  •  悲哀的现实
    2021-01-26 13:31

    You can provide a static method to initialize your static variable:

    public static final String startingPath = initPath();
    
    private static String initPath() {
        try {
            return new File(".").getCanonicalPath();
        } catch (IOException e) {
            throw new RuntimeException("Got I/O exception during initialization", e);
        }
    }
    

    Or you can initialize your variable in a static block:

    public static final String startingPath;
    
    static {
        try {
            startingPath = new File(".").getCanonicalPath();
        } catch (IOException e) {
            throw new RuntimeException("Got I/O exception during initialization", e);
        }
    }
    

    EDIT: In this case your variable is static so there is no way to declare the exception thrown. Just for reference, if the variable is non-static you could do this by declaring the thrown exception in the constructor, like so:

    public class PathHandler {
    
        private final String thePath = new File(".").getCanonicalPath();
    
        public PathHandler() throws IOException {
            // other initialization
        }
    

提交回复
热议问题