我已經在產品執行以下代碼無法捕獲異常
public void updateProduct(Product product) throws ProductNotFoundException {
Iterator<Product> it = allProducts.iterator();
Product p = null;
if (!allProducts.isEmpty()) {
while (it.hasNext()) {
p = it.next();
if (p.getId() == product.getId()) {
p.setPrice(product.getPrice());
System.out.println("Successfully updated the product "
+ product.getId());
}
}
} else {
System.out.println("No such product " + product.getId());
throw new ProductNotFoundException(product.getName());
}
}
//主
ipod.setId(Integer.MAX_VALUE);
try {
productDB.updateProduct(ipod);
Assert.fail("should've gotten ProductNotFoundException");
}
catch (ProductNotFoundException pnfe) {
// expecting this
}
JUnit的拋出以下異常
Exception in thread "main" productdb.util.AssertionFailedError: should've gotten ProductNotFoundException
at productdb.util.Assert.fail(Assert.java:43)
**at productdb.ProductDBClient.testProductServer(ProductDBClient.java:85)**
at productdb.ProductDBClient.main(ProductDBClient.java:20)
不幸的是,我無法使用try和catch。編譯器發出錯誤說它不能被捕獲。
你可以請我提供一些指針,我不正確的做?
非常感謝!
好像你沒有正確地把代碼。 「allProducts」在哪裏定義? – Reddy
我覺得這個問題有點不清楚。您說發生了編譯錯誤,但是您還包含運行時拋出的異常,表明代碼必須已成功編譯(要執行)。 – Vulcan
聽起來像你期待的那樣,當'iPod'產品找不到時就會拋出異常,但實際上只有在'allProducts'爲空時纔會拋出異常(我猜測它不是)。 – jerry