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

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

Discussion in 'Разработка плагинов для новичков' started by saharin94, Apr 16, 2014.

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Насколько я знаю YML-Парсер выводит ошибки при считывании
    Code:
    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 Старожил Пользователь Заблокирован

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

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

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
    try/catch?
     
  10. Автор темы
    saharin94

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

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

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

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

Share This Page