自定义异常消息

时间:2012-06-19 10:40:08

标签: java exception

我想扩展RuntimeException以创建此特定异常:

class CompileLinkException extends RuntimeException {

    CompileLinkException(int shader) {
        int infoLogLength = glGetShader(shader, GL_INFO_LOG_LENGTH);
        String strInfoLog = glGetShaderInfoLog(shader, infoLogLength);

        // set exception message = strInfoLog

        glDeleteShader(shader);
    }
}

如何设置自定义异常消息?我知道的唯一方法是致电

super(message)

但该指令必须是构造函数中的第一个语句。

2 个答案:

答案 0 :(得分:4)

我不确定Exception代码是否仅在内部使用getMessage()方法来使用该消息,但您可以尝试覆盖此方法并查看它是否适合您:

class CompileLinkException extends RuntimeException {
    String strInfoLog;

    CompileLinkException(int shader) {
        int infoLogLength = glGetShader(shader, GL_INFO_LOG_LENGTH);
        strInfoLog = glGetShaderInfoLog(shader, infoLogLength);
    }

    @Override
    public String getMessage() {
        return strInfoLog;
    }
}

答案 1 :(得分:1)

你可以这样做:

super(glGetShaderInfoLog(shader, glGetShader(shader, GL_INFO_LOG_LENGTH)));