Java异常分成两个部分:“抛出异常”和"捕获异常"
Java异常处理机制是:将可能发生异常的语句写入try{ }中,当try语句中发生异常时,系统会生成一个异常对象,该异常对象会提交给Java运行时环境,这个过程称为“抛出异常”。
当出现异常时,会去匹配可以处理异常的catch语句,如果找到,则给catch处理,这个过程为
“捕获异常”找不到则给调用者处理异常,该异常对象就交给函数调用者处理。
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
try {
int n=scan.nextInt();//输入时可能会出现不是int型,会出现错误所以写入try中。
switch(n){
case 1:System.out.print("java");break;
case 2:System.out.print("css");break;
case 3:System.out.print("数据库");break;
default:System.out.print("不存在");
}
} catch (Exception e) {
System.out.print("请正确输入");
}finally{
System.out.print("结束");
}
}
当用户输入int型信息时则会返回try{ }内的内容,最后执行finally。
若输入的不是int型信息,则try会抛出异常,然后匹配可以解决的catch,由catch来捕获异常。
最终输出“请正确输入”“ ”结束”。
public static void main(String[] args) {
Text1 text1=new Text1();
try{
text1.come();//用try-catch处理异常,作为方法的调用者,在这里处理异常。
}catch(IOException e){
12: e.printStackTrace();//1.可以显示异常所在代码的行数和调用栈信息
//2.可以显示异常的调用路径
}
}
19: public void come() throws IOException{//在方法头部声明抛出异样
go();//该方法会出现异常,但是不处理
}
22: public void go() throws IOException{//在方法头部声明抛出异样
throw new IOException("出现异常了呦呦呦");//在此处抛出异常,但是没有处理异常
}
输出结果为:
java.io.IOException: 出现异常了呦呦呦
at test.Text1.go(Text1.java:22)
at test.Text1.come(Text1.java:19)
at test.Text1.main(Text1.java:12)