Как отловить ошибку при загрузке конфига

saharin94

Старожил
Заблокирован
Пользователь
Баллы
173
Имя в Minecraft
RubukkitDniwe
Загружаю конфиг таким способом:
Код:
YamlConfiguration config = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "config.yml"));
Но как мне узнать, что произошла ошибка (например, синтаксическая)? Отловить исключение не получается, так как loadConfiguration его не бросает.
 
Ну, судя по всему никак.
Можно попробовать добавить спец. поле, которое всегда должно быть чем-то заполнено
и проверять его при запуске на не пустость.
Ведь на сколько я знаю, если при парсировке возникла ошибка, то весь конфиг-файл не читается.
 
Загружаю конфиг таким способом:
Код:
YamlConfiguration config = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "config.yml"));
Но как мне узнать, что произошла ошибка (например, синтаксическая)? Отловить исключение не получается, так как loadConfiguration его не бросает.
Синтаксическая ошибка упадёт только после обращения к секции с ошибкой
 
У меня в таком случае создаётся новый конфиг.
Насколько я знаю YML-Парсер выводит ошибки при считывании
Код:
2014-01-26 09-16
=============================== GM ERROR LOG ===============================
= ERROR REPORT START - 2.0 (2.12.1) (Phoenix) =
java.lang.IllegalArgumentException: The following file couldn't pass on Parser.
plugins\GroupManager\worlds\world\groups.yml
    at org.anjocaido.groupmanager.dataholder.WorldDataHolder.loadGroups(WorldDataHolder.java:496)
    at org.anjocaido.groupmanager.dataholder.WorldDataHolder.loadGroups(WorldDataHolder.java:416)
    at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.loadWorld(WorldsHolder.java:678)
    at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.loadWorld(WorldsHolder.java:640)
    at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.initialWorldLoading(WorldsHolder.java:110)
    at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.initialLoad(WorldsHolder.java:100)
    at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.resetWorldsHolder(WorldsHolder.java:92)
    at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.<init>(WorldsHolder.java:59)
    at org.anjocaido.groupmanager.GroupManager.onEnable(GroupManager.java:169)
    at org.anjocaido.groupmanager.GroupManager.onEnable(GroupManager.java:93)
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:218)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:384)
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:298)
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:280)
    at net.minecraft.server.v1_7_R1.MinecraftServer.m(MinecraftServer.java:342)
    at net.minecraft.server.v1_7_R1.MinecraftServer.g(MinecraftServer.java:319)
    at net.minecraft.server.v1_7_R1.MinecraftServer.a(MinecraftServer.java:275)
    at net.minecraft.server.v1_7_R1.DedicatedServer.init(DedicatedServer.java:175)
    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:424)
    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617)
Caused by: while parsing a block mapping
in "<reader>", line 12, column 3:
      Default:
      ^
expected <block end>, but found BlockMappingStart
in "<reader>", line 62, column 4:
      Gold:
      ^
    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:575)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:123)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:423)
    at org.anjocaido.groupmanager.dataholder.WorldDataHolder.loadGroups(WorldDataHolder.java:491)
    ... 20 more
============================================================================
Хотя возможно это феачура груп-менеджера, если так - копай его :)
 
Насколько я знаю YML-Парсер выводит ошибки при считывании Хотя возможно это феачура груп-менеджера, если так - копай его :)
Блин, у меня тоже выводится, но мне нужно его обнаружить програмно.
 
Блин, у меня тоже выводится, но мне нужно его обнаружить програмно.
Хм.. Тогда пожалуй стоит задуматься над тем что-бы отказаться от YML парсера в пользу IO / NIO и считывать&проверять конфиг самостоятельно, но возможно я ошибаюсь
 
Назад
Верх