繁体   English   中英

Java:stderr和捕获的异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM