[英]Java: stderr and caught exception
我有以下方法:
public void doQuery(String q){
try{
java.sql.Statement statement.execute(q);
} catch (SQLException e){
System.out.println("query: "+q);
e.printStackTrace();
}
}
我的上述意图是,由于插入中的文本值偶尔会带有双引号,导致语句失败,因此是要捕获错误并继续。
我的问题是,这段代码会达到我的预期吗? 似乎由于该错误而导致程序正在终止-我在stderr中看到了一个堆栈跟踪,这没想到。
谢谢,
杰夫
是的,您的代码将执行您想要的操作,在捕获到的任何SQL异常上,打印查询,然后将堆栈跟踪打印到错误流。
如果您不想将其打印到错误流,请删除该命令。
我建议您不要打印查询。 这不是一个好习惯,因为潜在的恶意用户可能会利用有关您数据库的知识。
如果您的程序由于未处理的异常而意外终止,我认为您的执行不是SqlException类型。 为了确保捕获所有异常,可以定义其他捕获块以捕获更常规的异常类型。
您可以这样做:
try
{
java.sql.Statement statement.execute(q);
}
catch (SQLException e){
System.out.println("DB Exception"); // Put breakpoint here
e.printStackTrace();
}
catch(Exception e)
{
System.out.println("General Exception"); // Put breakpoint here
e.printStackTrace();
}
如果找不到意外终止的原因,则应尝试调试程序。 您可以在突出显示的地方放置断点,以查看哪个被击中。 否则,您可以尝试逐步调试以找出问题所在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.