Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем saharin94, 16 апр 2014.

  1. Автор темы
    saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Загружаю конфиг таким способом:
    Код:
    YamlConfiguration config = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "config.yml"));
    Но как мне узнать, что произошла ошибка (например, синтаксическая)? Отловить исключение не получается, так как loadConfiguration его не бросает.
     
  2. Хостинг MineCraft
    <
  3. kirill2011s

    kirill2011s Старожил Пользователь

    Баллы:
    103
    Ну, судя по всему никак.
    Можно попробовать добавить спец. поле, которое всегда должно быть чем-то заполнено
    и проверять его при запуске на не пустость.
    Ведь на сколько я знаю, если при парсировке возникла ошибка, то весь конфиг-файл не читается.
     
  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Синтаксическая ошибка упадёт только после обращения к секции с ошибкой
     
  5. Автор темы
    saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    У меня в таком случае создаётся новый конфиг.
     
  6. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Насколько я знаю 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
    ============================================================================
    Хотя возможно это феачура груп-менеджера, если так - копай его :)
     
  7. Автор темы
    saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Блин, у меня тоже выводится, но мне нужно его обнаружить програмно.
     
  8. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Хм.. Тогда пожалуй стоит задуматься над тем что-бы отказаться от YML парсера в пользу IO / NIO и считывать&проверять конфиг самостоятельно, но возможно я ошибаюсь
     
  9. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    try/catch?
     
  10. Автор темы
    saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Для танкистов:
     
  11. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    if(config.getRoot != null) всёХорошо( ); else ошибкиПовсюду();
     

Поделиться этой страницей