ChainedJsonException.java

net.minecraft.server.ChainedJsonException

信息

  • 全限定名:net.minecraft.server.ChainedJsonException
  • 类型:public class
  • 包:net.minecraft.server
  • 源码路径:src/main/java/net/minecraft/server/ChainedJsonException.java
  • 起始行号:L10
  • 继承:IOException
  • 职责:

    TODO

字段/常量

  • entries

    • 类型: List<ChainedJsonException.Entry>
    • 修饰符: private final
    • 源码定位: L11
    • 说明:

      TODO

  • message

    • 类型: String
    • 修饰符: private final
    • 源码定位: L12
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.server.ChainedJsonException.Entry
    • 类型: class
    • 修饰符: public static
    • 源码定位: L52
    • 说明:

      TODO

构造器

public ChainedJsonException(String message) @ L14

  • 构造器名:ChainedJsonException
  • 源码定位:L14
  • 修饰符:public

参数:

  • message: String

说明:

TODO

public ChainedJsonException(String message, Throwable cause) @ L19

  • 构造器名:ChainedJsonException
  • 源码定位:L19
  • 修饰符:public

参数:

  • message: String
  • cause: Throwable

说明:

TODO

方法

下面的方法块按源码顺序生成。

public void prependJsonKey(String key) @ L25

  • 方法名:prependJsonKey
  • 源码定位:L25
  • 返回类型:void
  • 修饰符:public

参数:

  • key: String

说明:

TODO

public void setFilenameAndFlush(String filename) @ L29

  • 方法名:setFilenameAndFlush
  • 源码定位:L29
  • 返回类型:void
  • 修饰符:public

参数:

  • filename: String

说明:

TODO

public String getMessage() @ L34

  • 方法名:getMessage
  • 源码定位:L34
  • 返回类型:String
  • 修饰符:public

参数:

说明:

TODO

public static ChainedJsonException forException(Exception e) @ L39

  • 方法名:forException
  • 源码定位:L39
  • 返回类型:ChainedJsonException
  • 修饰符:public static

参数:

  • e: Exception

说明:

TODO

代码

public class ChainedJsonException extends IOException {
    private final List<ChainedJsonException.Entry> entries = Lists.newArrayList();
    private final String message;
 
    public ChainedJsonException(String message) {
        this.entries.add(new ChainedJsonException.Entry());
        this.message = message;
    }
 
    public ChainedJsonException(String message, Throwable cause) {
        super(cause);
        this.entries.add(new ChainedJsonException.Entry());
        this.message = message;
    }
 
    public void prependJsonKey(String key) {
        this.entries.get(0).addJsonKey(key);
    }
 
    public void setFilenameAndFlush(String filename) {
        this.entries.get(0).filename = filename;
        this.entries.add(0, new ChainedJsonException.Entry());
    }
 
    @Override
    public String getMessage() {
        return "Invalid " + this.entries.get(this.entries.size() - 1) + ": " + this.message;
    }
 
    public static ChainedJsonException forException(Exception e) {
        if (e instanceof ChainedJsonException) {
            return (ChainedJsonException)e;
        } else {
            String message = e.getMessage();
            if (e instanceof FileNotFoundException) {
                message = "File not found";
            }
 
            return new ChainedJsonException(message, e);
        }
    }
 
    public static class Entry {
        private @Nullable String filename;
        private final List<String> jsonKeys = Lists.newArrayList();
 
        private Entry() {
        }
 
        private void addJsonKey(String name) {
            this.jsonKeys.add(0, name);
        }
 
        public @Nullable String getFilename() {
            return this.filename;
        }
 
        public String getJsonKeys() {
            return StringUtils.join(this.jsonKeys, "->");
        }
 
        @Override
        public String toString() {
            if (this.filename != null) {
                return this.jsonKeys.isEmpty() ? this.filename : this.filename + " " + this.getJsonKeys();
            } else {
                return this.jsonKeys.isEmpty() ? "(Unknown file)" : "(Unknown file) " + this.getJsonKeys();
            }
        }
    }
}

引用的其他类