1、自定义异常
(1)先定义一个方法,其中包含可能会抛出异常的行为(可能成功,也可能失败),并且if(失败) 则 throw eException
(2)在使用该方法时必须是在try-catch里面的try执行
(3)程序在执行到throw语句时立即终止,从该方法中跳出往下执行,所以throw后面的语句不可达
static int filterCartItem(int id) throws MyException { // TODO Auto-generated method stubif (id<0) { // throw之后的语句都无效 throw new MyException("不存在该商品!");}
return id;
}
主函数中使用它:
(1)如果catch中没有内容,则不会显示异常信息
(2)catch里面的e是filterCartItem里面抛出的
(3)catch里面的参数应该和filterCartItem里的异常类一致
(4)如果try的某一条语句执行出现异常,则该语句一下的语句都不会在执行,而直接条转到catch
try { filterCartItem(id); } catch (MyException e) { // TODO: handle exception System.out.println(e.getMessage()); }
如果在try中出现错误但希望再给它一次机会,可以:
for (int i = 0; i < 3; i++) { try { // } catch (Exception e) { // TODO Auto-generated catch block System.out.println("错误的数量: " + e.getMessage()); if (i != 2) { System.out.println("请重新输入:"); } else { System.out.println("错误次数达到最大,终止!"); } } }
2、已经try-catch还是提醒要throw解决方法:
因为catch的异常类不是基类exception导致异常不全!
Done!