{
throw new Exception()
var a = 1
}
catch
{
var b = 1
}
var c = 1
不会的,如果程序抛出异常,然后会检测调用链,直到有 try 语句,匹配 catch 被捕获,然后执行 catch 语句块,如果直到顶层都没被捕获,则程序异常结束。
这里执行到throw new Exception(),然后抛出异链毁卖常。var a = 1 代码则不会被执行,棚逗异常被catch 捕获,接下来则执行余橡var b = 1 然后则是var c = 1, 然后继续往下执行。
出现InputMismatch后一直循环:当某一扫描器抛出 InputMismatchException 时,该扫描器散扮不会传递导致该异常的标记,因此可以通过其他某种方法来获取或跳过它。
这是java API文档中的原话。意思是说,如果nextInt方法没有成功解析出一个整数,那么你的输入不会被忽略。因为它或许能被其辩陪它格式解析。
那么你的程序中输入了a后,出现异常,number被赋值100,开始下一次循环,但这时数据缓冲区内你上次输入的a还在,并没有清除,这时继续解析a,还是错误,于是这个过程就一直重复下去了。
现在你要改的是,出现错误把这次的输入清除,冲灶灶只要在catch中,加一句:input.next()就搞定了!
也可以将Scanner写在try里面
一般如果出现非人为异常,即非通过代码throw的方式抛出异常,同时未通过try-catch捕捉。则当前代码不会继续执行,而是向上抛出异常,即返回调用当前代码的位置。如果该位置未对异常进行处理,则继续向上抛出。
通过try-catch捕捉异常,即异常代码在try中,可以在catch中进行异常处理
try{...
//代码,产生异常
}catch(Exception e){//e是异常类型,一般根父类为Exception类
...
//进行产生异常后的处理
}finally{
局谨 ...
//无论握银如何都会执行的代码
}
...
//如果catch中没有继续throw异常以及没有产生新异常,则继续执行的代码
如果想要代码继续执行,可以在catch中不继续抛出异常,则代码将执行catch之后的代码(如果有finally,则先执行finally的代码)。如果想要在产生桐皮基异常之后仍需要执行一部分代码,则可以将该部分代码放在finally中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)