异常:程序运行过程中,出现一些问题,阻止了程序的正常运行,这种情况称之为异常。
异常处理:异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行。
一般使用 try...catch...语句块来处理异常,下面是一个例子:
import java.util.Scanner; public class test { public static void main(String[] args) { while(true){ try{ Scanner in=new Scanner(System.in); System.out.println("请输入1或2!"); int a=in.nextInt(); if(a!=1&&a!=2){ continue; } else{ break; } }catch(Exception e){ continue; } } System.out.println("欢迎"); }}
这里输入了不属于int类型的"a",但是并没有出现错误,这是因为这里的异常被catch捕获到了,并执行了continue,继续循环。
如果注释掉try...catch...语句块
import java.util.Scanner; public class test { public static void main(String[] args) { while(true){ /*try{*/ Scanner in=new Scanner(System.in); System.out.println("请输入1或2!"); int a=in.nextInt(); if(a!=1&&a!=2){ continue; } else{ break; } /*}catch(Exception e){ continue; }*/ } System.out.println("欢迎"); }}
再输入"a"会出现这种结果:
可以有多个catch块,每个catch可以处理一个异常,异常匹配是按照catch块的顺序从上往下寻找的,只有第一个匹配的catch会得到执行,如果catch块之间有父子关系,子类异常放在前面。
throws是另一种处理异常的方式,就是不知道该如何处理,就把这个异常用throws抛出,让调用这个方法的去处理。