如何在加载/重新加载文件之前捕获yml解析器错误

我在一个插件上使用以下代码来创建自定义配置。除非用户在yml中出现解析器错误,否则一切工作都很好。例如,如果用户错过了引号/空格,则他们的整个yml都将替换为默认的yml。我在其他地方编写了代码,以检查他们的yml文件中是否有某些东西,否则,它将把它添加到yml文件中。但是,如果文件中存在错误,则我的“配置检查器”找不到该信息,因此它必须重写并修复它。

我尝试了很多次,试图在加载文件时捕获错误,但似乎无法捕获任何错误。我想知道如何解析文件以检查错误,然后如果有错误,我应该关闭“配置检查器”。

GUIManager.java

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.logging.Level;

import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;

import me.Cmaaxx.AdvancedHelp.Main;

public class GUIManager {
    private Main plugin;
    private FileConfiguration dataConfig = null;
    private File dataConfigFile = null;

    public GUIManager(Main plugin) {
        this.plugin = plugin;
        saveDefaultConfig();
    }

    public void reloadConfig() {
        if (this.dataConfigFile == null) {
            this.dataConfigFile = new File(this.plugin.getDataFolder(),"gui.yml");
        }
        this.dataConfig = YamlConfiguration
                .loadConfiguration(this.dataConfigFile);

        InputStream defConfigStream = this.plugin.getResource("gui.yml");
        if (defConfigStream != null) {
            YamlConfiguration defConfig = YamlConfiguration
                    .loadConfiguration(new InputStreamReader(defConfigStream));
            this.dataConfig.setDefaults(defConfig);
        }
    }

    public FileConfiguration getconfig() {
        if (this.dataConfig == null) {
            reloadConfig();
        }
        return this.dataConfig;
    }

    public void saveConfig() {
        if ((this.dataConfig == null) || (this.dataConfigFile == null)) {
            return;
        }
        try {
            getconfig().save(this.dataConfigFile);
        } catch (IOException ex) {
            this.plugin.getLogger().log(Level.SEVERE,"Could not save config to "
                    + this.dataConfigFile,ex);
        }
    }

    public void saveDefaultConfig() {
        if (this.dataConfigFile == null) {
            this.dataConfigFile = new File(this.plugin.getDataFolder(),"gui.yml");
        }
        if (!this.dataConfigFile.exists()) {
            this.plugin.saveResource("gui.yml",false);
        }
    }

}

我尝试过的事情:


try {
     this.dataConfig = YamlConfiguration
                   .loadConfiguration(this.dataConfigFile);
} catch (Exception e) {
    // error found
   return;
}

^^即使出现错误也不会捕获错误

ddrcon 回答:如何在加载/重新加载文件之前捕获yml解析器错误

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3163251.html

大家都在问