1

我想扩展 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)

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

4

2 回答 2

4

我不确定异常代码是否仅在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;
    }
}
于 2012-06-19T10:48:37.960 回答
1

你可以这样做:

super(glGetShaderInfoLog(shader, glGetShader(shader, GL_INFO_LOG_LENGTH)));
于 2012-06-19T10:45:42.237 回答