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 に答える