我在一个插件上使用以下代码来创建自定义配置。除非用户在yml中出现解析器错误,否则一切工作都很好。例如,如果用户错过了引号/空格,则他们的整个yml都将替换为默认的yml。我在其他地方编写了代码,以检查他们的yml文件中是否有某些东西,否则,它将把它添加到yml文件中。但是,如果文件中存在错误,则我的“配置检查器”找不到该信息,因此它必须重写并修复它。
我尝试了很多次,试图在加载文件时捕获错误,但似乎无法捕获任何错误。我想知道如何解析文件以检查错误,然后如果有错误,我应该关闭“配置检查器”。
GUIManager.java <-创建yml文件的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;
}
^^即使出现错误也不会捕获错误