把能出现异常的代码放到 try... catch... 中进行异常捕捉处理,这样就能使程序继续进行,不会因为异常造成程度中断
创新互联主营固始网站建设的网络公司,主营网站建设方案,重庆APP开发公司,固始h5小程序定制开发搭建,固始网站营销推广欢迎固始等地区企业咨询
1.首先,如果你是想在这个方法里面继续执行,那么使用finally语句即可,即如下:
看样子你是想使用try catch结构,那么你没有写catch 啊
try {
可能会出现错误的代码
}catch(Excpetion e){
抛出错误后该运行的代码
}
finally{
无论是否抛出错误都一定会运行的代码
}
2.如果你是在这个方法中抛出错误,但是是提交给外面调用的方法解决,那么就只需要把你需要继续执行的代码写在外面即可,即如下:
A方法是可能报错的
你要在A里面加上throw或者throws语句,具体这个怎么用,不知道你会不会啊,你可以百度一下,有两种用法,方法头 和 方法中
B方法调用了A,那么把你需要继续执行的代码写在B里面,调用完A,不管报错与否都会继续运行。
如果使用了try catch 代码块,来捕获和处理异常, 那么后面的代码,可以执行
如果没有捕获处理异常, 那么后面的代码无法执行.
一般可以分成三面三种情形.
参考代码
public class Test {
public static void main(String[] args) {
//情形一: try catch finally 模块
int[] ary = {5};
try {
System.out.println("代码1");//这里会执行
int x = ary[3];//数组下标越界, 会抛出异常,跳到catch代码块里,去执行代码 .代码2无法被执行
System.out.println("代码2");//这里不会执行
}catch (Exception e) {
System.out.println("代码3");//如果捕获到了异常 ,这里的代码会执行
}finally {//finally的代码,总会执行
System.out.println("代码4");//这里会执行
}
//情形二: try finally
try {
System.out.println("代码5"); //这里会执行
int y=ary[3]; //这里还是会抛出异常, 数组下标越界.
System.out.println("代码6");//这里不会执行
}finally { //finally的代码,总会执行
System.out.println("代码7");// 这里会执行
}
//情形三: 没有try catch fianlly
int z =ary[3];//这里还是会抛出异常, 数组下标越界. 并且没有使用try catch等代码块,后面的代码无法执行
System.out.println("代码8");// 这里不会执行
}
}
拓展:
由于 ...finally代码块里面的代码总会执行, 所以, 一般释放IO资源, 释放数据库资源,等操作, 都放到finally代码块里.
出现InputMismatch后一直循环:
当某一扫描器抛出 InputMismatchException 时,该扫描器不会传递导致该异常的标记,因此可以通过其他某种方法来获取或跳过它。
这是java API文档中的原话。意思是说,如果nextInt方法没有成功解析出一个整数,那么你的输入不会被忽略。因为它或许能被其它格式解析。
那么你的程序中输入了a后,出现异常,number被赋值100,开始下一次循环,但这时数据缓冲区内你上次输入的a还在,并没有清除,这时继续解析a,还是错误,于是这个过程就一直重复下去了。
现在你要改的是,出现错误把这次的输入清除,只要在catch中,加一句:input.next()就搞定了!
也可以将Scanner写在try里面