/*
异常:java程序编译或者运行时遇到的错误
java中的异常分为3种:
Throwable:
Error: 错误
Exception:
编译时期异常
RuntimeException(运行时期异常)
举例,该例子仅上课使用,如现实生活遇到,概不负责。魏一民想要去大蜀山,骑哈罗电单车去,骑车骑到一半没电了(编译时期异常),应该是在出发
前就应该检查的问题;骑车在大蜀山的路上,遇到了钉子,轮胎漏气了,这个是骑车的过程种遇到的问题(运行时期异常);大蜀山火山喷发了,
挡住了前进的路,这个问题就属于非常严重的问题(Error)。
java遇到程序遇到问题时,默认的处理方案是:结束java进程,报错。
*/
/*
异常的处理方案:
1、try...catch...finally
2、throws
方案1:
try{
可能会出错的代码;
}catch(异常类 参数){
处理的方案逻辑;
}
try..catch..注意事项:
1、try中定义变量作用域就在try种使用
2、若try中代码没有异常,是不会匹配catch的
3、catch若没有try出现的异常类型的话,就会使用java默认处理异常方案
4、catch可以写多个,也可写一个,但是若多个catch存在继承关系的话,将父亲放在儿子的后面
5、若使用jdk1.8新特性写法,使用一个catch接收多个异常类的话,不允许出现父子关系异常
*/
package com.shujia.day15;
public class ExceptionDemo3 {
public static void main(String[] args) {
try {
int a = 10;
System.out.println(a / 2); // new ArithmeticException()
} catch (ArithmeticException e) {// ArithmeticException e = new ArithmeticException()
// System.out.println(e.getMessage());
// System.out.println(e.toString());
e.printStackTrace();
}finally { // 无论try中的代码是否出现问题,这里的代码都会执行
//一般情况下,finally里面写释放资源的代码
System.out.println("好好学习,天天向上!");
}
System.out.println("hello world");
System.out.println("魏一民真帅!");
}
}
package com.shujia.day15;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
/*
异常处理的第二种方案:throws
在方法的定义小括号后面加异常类名。可以同时抛出多个异常类,表示该方法可能会出现某个异常,表示可能性
throw关键字,在方法内部使用,后面跟着是一个具体的异常对象,表示一定会发生某个异常
举例,该故事纯属虚拟,仅供上课案例。徐思远是一个快乐的小矿工,有一天,正常挖矿(java程序运行),突然挖到一颗远古炸弹(遇到了异常)
,开始将炸弹往洞口传递(throw),到了洞口给到了矿场管理者,管理者引爆了炸弹(try..catch)。
throws抛出的若是编译时期异常,调用者必须要进行处理,否则程序无法通过遍历。
若抛出的是运行时期异常,可以不处理,可以运行
*/
public class ExceptionDemo4 {
public static void main(String[] args){
// try {
// fun1();
// }catch (Exception e){
// e.printStackTrace();
// }
//
// System.out.println("oveer");
// fun1();
// try {
// fun2();
// }catch (Exception e){
// e.printStackTrace();
// }
fun1();
// fun2();
}
public static void fun2() throws FileNotFoundException {
FileInputStream fis = new FileInputStream("xxx");
}
public static void fun1() throws ArrayIndexOutOfBoundsException{
int[] arr = {1, 2, 3, 4};
Scanner sc = new Scanner(System.in);
System.out.println("请输入要查询的索引:");
int index = sc.nextInt();
if (index >= 0 && index <= arr.length - 1) {
System.out.println(arr[2]);
} else {
throw new ArrayIndexOutOfBoundsException();
}
System.out.println("hello world");
}
}
标签:方案,java,System,try,day15,catch,println,异常
From: https://www.cnblogs.com/qiwei-bigdata/p/18359240