异常处理

Throwable 异常处理类的顶端类
Error (服务器崩溃 数据库崩溃)
Exception (异常类) : RuntimeException(运行时异常)
int[] num = new int[1];
System.out.println(num[2]);
int[] num = new int[1];
num = null;
System.out.println(num[1]);
System.out.println(10/0);
try….catch….finally
try 指测试异常代码
catch 指捕获异常信息
finally 指异常结束后所执行的
try...catch捕获异常的流程
1.函数中 某句代码发生异常
2.发生异常就产生了对应的异常对象
3.这个异常对象 返回给调用者
情况1: 没有对异常进行处理 这时就会把异常交给上级
交给JVM去处理 JVM使用默认的处理机制
情况2: 调用者进行异常处理(try...catch)
这时返回的异常对象 会跟catch进行匹配
匹配成功执行catch中的语句
class TestException{
public int fun(int a , int b) {
return a / b ;
}
}
public static void main(String[] args) {
TestException testException = new TestException();
try {
int num = testException.fun(10, 0);
System.out.println(num);
}catch (Exception e) {
System.out.println("你除的是0");
}
System.out.println("!!!");
}
多catch处理异常
int[] arr = new int[4];
try {
System.out.println(arr[5]);
arr = null;
System.out.println(arr[1]);
System.out.println(10/0);
}catch (ArrayIndexOutOfBoundsException e) {
System.out.println("你越界了");
}catch (NullPointerException e) {
System.out.println("你空指针了");
}catch (ArithmeticException e) {
System.out.println("你除0了");
}catch (Exception e) {
System.out.println("???");
}System.out.println("!!!");
finally
出现异常与否 不会影响到finally的执行
finally: 一般用来关闭资源 关闭流 关闭数据库
class TestFinally{
public int fun() {
int num = 10;
try {
num = 20;
System.out.println(9/3);
return num;
} catch (Exception e) {
num = 30;
return num;
} finally {
num = 40;
}
}
}
try {
System.out.println(1/1);
return;
} catch (Exception e) {
System.out.println("你除0了");
} finally {
System.out.println("????????");
}
System.out.println("!!!!!");
运行时异常 和 编译时异常
FileInputStream i = new FileInputStream("wl.txt");
try {
FileInputStream i = new FileInputStream("wl.txt");
} catch (Exception e) {
System.out.println("无此文件");
}
处理方式1: 添加try...catch(手动处理)
try {
FileInputStream i = new FileInputStream("wl.txt");
} catch (Exception e) {
System.out.println("无此文件");
}
处理方式2: 可以把异常抛给上级去处理
public static void main(String[] args) throws FileNotFoundException{
FileInputStream i = new FileInputStream("wl.txt");
}
Throwable的方法
public static void main(String[] args) {
Exception e = new Exception("这里可以写错误信息");
String message = e.getMessage();
e.printStackTrace();
}
public static void main(String[] args) {
System.out.println("请输入一个整数: ");
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> arrayList = new ArrayList<>();
while (true) {
String string = scanner.nextLine();
if (string.equals("quit")) {
break;
}
try {
int num = Integer.parseInt(string);
arrayList.add(num);
} catch (Exception e) {
System.out.println("输入的不是整数 请重新输入");
}
}
System.out.println(arrayList);
}