English 中文(简体)
既可捕获,又可举出例外。
原标题:is there a way to both catch and throw an exception

我有一种办法,可以进入亚洲开发银行,因此,我国的亚行在多瑙河航道中的所有 st子都位于一个试捕区。 正在收集<代码>SQLException。

当我针对这一方法撰写测试案例时,如果出现<代码>SqlException,那么我的测试案例就没有造成错误。 这只是沿途。

然而, 如果I dont在DAO方法中捕获SqlException,但在方法上添加throws SqlException,那么我的测试案例就造成了错误,并显示了所发生的错误。 (这是我想要的。)

当我试图添加“条码”>以及“SqlException<>/code”的捕获方法时,我的测试案例也并未造成错误。

周围的道路如何? 在我的试测验中,有人要尝试/捕获物,但即使我确实如此,我的“Junit”测试案例并没有说造成错误,尽管国际船舶和公司标准产出中的例外。

......除此以外,还有什么东西?

我的IDE是Netbeans。 这就是我处理测试案件的情况。

法典:

public class MyDaoClass {
 Connection con;
 public MyDaoClass (Connection connection)
 {
  this.con = connection;
 }


 public SomeObject someMethod (String id)
 {
    try{
  Connection con = this.con;
  CallableStatement cs = con.prepareCall("{call some_sp_name (?)}");
  cs.setString (1, id);
  cs.execute()//imagine an error happens here
  ResultSet rs = cs.getResultSet()
  ...
  ....
  //return SomeObject...
    }
    catch (SqlException e) //If I remove this and add  throws SQLException to method then everything is ok
    {
     log.error(e.getMessage());//i dont have access to log object in test case
    }

 }
    }

public class MyTestSuite extends TestCase
{
 //populate local connection
 public void testSomeMethod () throws SQLException
 {
  MyDaoClass myd = new MyDaoClass(connection);
  SomeObject s = myd.someMethod("blah");
  assertEquals (s.getFirstName(), "pepe");
 }
}
最佳回答

如果你对这种方法表示怀疑,那么你就不必再尝试。

是的,你可以追捕并举一个例外:

try {
   // some code
}
catch (SomeException e) {
   throw e; 
   // or,
   // throw new SomeOtherException();
}
问题回答

Java的所有核查例外都必须在方法规格中宣布。 <>SqlException是一个经核实的例外,因此,如果你想要放弃,你必须将其列入具体内容。

如果你想要放弃一个例外,但你可以改变方法规格,那么你需要使用一个不受约束的例外,例如<代码>RuntimeException。 这也将造成Junnit显示所发生的错误。

Java岛:特例是这个专题的极好参考。

日尼特不关心你所说的标准产出。 如果例外漏掉了你的手法,那么JUSG就会通知。

如果你在你的方法中抓住了这一例外情况,那么,它就纠正了例外情况,不要脱离你的方法,因为它是(我们希望!)在那里处理的。 因此,通过测试是一种好的征兆。

你们应该测试的是,你的方法是否正在产生正确的结果(无论可能是什么结果),即便是在排除例外情况的情况下(和处理)。

这并不是整个法典? 汇编者会抱怨,有些编辑者会抱怨: 方法并不总是恢复价值。

If you want to keep the method as is, then at least add "return null;" after the try/catch. That way, if an SQLException occurs, then assertEquals should throw NullPointerException which should work on your TestCase.

附带建议,即在使用之前,将检查连接是否无效。

您不能再保留例外情况,也能够回馈一个<>null的参考文件,而不是一个空洞或不完整的物体。 您的打电话者必须检查<代码>null,并在农业部未能装载该物体时处理该案件。

或者,你可以通过替代构造将<代码>log<>>/code>的物体放入德国注册局。 您的顽固的沉积分流子可以向您的检查结果传递信息。

In addition to what Chip Uni said above re: Runtime exceptions to not need to be declared, you should also note that exceptions can be nested, i.e.

catch (SqlException e)
{
 throw new RuntimeException(e);
}

这将带来一个包含SqlExceotion的长时视。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签