我有一个字符串“ stringData”,我想将其转换为Clob,您能帮我吗?
我尝试过:
Clob clob = new SerialClob(stringData.toCharArray());
但是它给出了错误。
答案 0 :(得分:1)
因此Unhandled Exception
的问题不是.toCharArray()
和SerialClob
的问题。相反,问题在于必须捕获或声明Checked Exception作为方法的一部分。
所以(示例1):
try {
...
Clob clob = new SerialClob(stringData.toCharArray());
...
}
catch (SQLException e) {
// do handle better than this, however
e.printStackTrace();
}
或(示例2):
/**
@throws SQLException If there is an issue with creating the data, or
inserting into the DB
*/
private void storeData(StringData stringData) throws SQLException
{
...
Clob clob = new SerialClob(stringData.toCharArray());
...
}
当然,对于后者,还需要其他一些方法来捕获SQLException。
本质上,SQLException
是CheckedException。从JLS 11.2
Java编程语言要求程序包含用于检查异常的处理程序,这些异常可能是由于执行方法或构造函数而导致的。对于每个可能的结果检查异常,方法(§8.4.6)或构造函数(§8.8.5)的throws子句必须提及该异常的类或该异常的类的超类之一(§ 11.2.3)。
因此,必须捕获SQLException
(示例1),或将其添加到方法的throws
子句中(示例2)。
在以下位置找到收到编译时间问题的原因 JLS, 11.2.3 Exception Checking:
当E是检查的异常类并且E不是在方法或构造函数的throws子句中声明的某个类的子类时,如果方法或构造函数主体可以抛出某些异常类E,则是编译时错误。 / p>
对this question about Checked vs. Unchecked Exceptions的公认答案中也有讨论