Java 子类抛出UnsupportedOperationException与忽略输入参数

Java 子类抛出UnsupportedOperationException与忽略输入参数,java,inheritance,jdbc,subclass,liskov-substitution-principle,Java,Inheritance,Jdbc,Subclass,Liskov Substitution Principle,假设我有一个类,如类名所示,这个类不允许自动提交 所以我的问题是,如果最好像下面这样保留它(空正文,可能添加一些日志@WARN/ERROR level)或抛出UnsupportedOperationException public class NoAutoCommitConnection implements java.sql.Connection { public void setAutoCommit(boolean autoCommit) throws SQLException {

假设我有一个类,如类名所示,这个类不允许自动提交

所以我的问题是,如果最好像下面这样保留它(空正文,可能添加一些日志@WARN/ERROR level)或抛出UnsupportedOperationException

public class NoAutoCommitConnection implements java.sql.Connection {
    public void setAutoCommit(boolean autoCommit) throws SQLException {
    }
}

实际上,如果(autoCommit){throw new UnsupportedOperationException();},我会选择
,因为它清楚地表明不支持自动提交,但不会失败
setAutoCommit(false)
调用

不实现这个方法或者说它的意图破坏了接口的契约


我认为在这种情况下,您至少可以在运行时抛出一个异常。

您到底在问什么?
java.sql.Connection
的一致性实现必须始终支持
setAutoCommit
,JDBC规范不允许不实现它(或抛出
UnsupportedOperationException
SQLFeatureNotSupportedException
)。在MySQL中,MyISAM引擎是非事务性的,驱动程序允许调用
setAutoCommit
,但实际上,当使用MyISAM引擎连接到数据库时,会忽略它。