作为客户端,当程序的输入/输出发生“坏”时,应该抛出I / O异常。现在当我连接到服务器时,我的程序有一个输入输出关系作为服务器的客户端。因此,当通信上的某些东西不起作用(某些“坏”)时,产生的异常应该是IOException,即SQLException应该扩展IOException。
为什么不是这样?
答案 0 :(得分:6)
因为PostMessageW
并不总是与IO相关。
例如,如果编写错误的SQL命令,则会有SQLException
。
以下是与IO无关的可能SQLExceptions的非详尽列表:
来自javadoc:
提供有关数据库访问错误或其他错误的信息的异常。
答案 1 :(得分:1)
因为SQLException不一定是IOException。它可能是错误的语法,格式,... IOException旨在由I / O设备(最初流,如文件和网络操作)返回,不一定是程序的任何输入/输出。
答案 2 :(得分:0)
SQL-Exception不一定是IO异常(例如连接丢失,读取超时等)。
错误的SQL或约束违规也会引发SQL异常。
答案 3 :(得分:0)
例如,您可以尝试同时捕获两者
public Massage getLastMassage(String ChatNumber) {
database.beginTransaction();
Massage massage = null;
try {
String[] args = {ChatNumber};
//String selectQuery="SELECT * FROM " + MassageDBHelper.DATABASE_NAME + " WHERE PhoneNumber=?";
//Cursor cursor=database.rawQuery(selectQuery,args);
Cursor cursor = database.query(MassageDBHelper.DATABASE_NAME, columns, "PhoneNumber=?", args, null, null, null);
cursor.moveToLast();
massage = cursorToMassage(cursor);
cursor.close();
} catch {
//Error in between database transaction
} finally {
database.endTransaction();
return massage;
}
}