异常
异常
-
什么是异常
异常指程序运行中出现的不期而遇的各种状况,文件找不到、网络连接失败、非法参数等。
检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。
运行时异常:可能被程序员避免
错误ERROR:错误不是异常,而是脱离程序员控制的问题,比如栈溢出
-
异常体系结构
Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。
在java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception
Error类对象由java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关
Virtual MachineError ,当JVM不再有继续执行操作所需要的内存资源时,将出现OutOfMemoryError,这些异常发生时,JVM一般会选择线程终止。
Exception: 运行时异常和非运行时异常,一般由程序逻辑错误引起的,从逻辑表面避免。
-
Java异常处理机制
抛出异常、捕获异常
异常处理五个关键字try\catch\finally\throw\throws
-
处理异常
package com.exception; public class Demo01 { public static void main(String[] args) { // new Demo01().a(); } /* public void a(){ b(); } public void b(){ a(); } */ } package com.exception; public class Test { public static void main(String[] args) { int a = 1; int b = 0; //try、catch是必须要的东西,可以不要finally 假设IO资源,关闭! try {//try监控区域 System.out.println(a / b); } catch (Error e) { //catch 捕获异常 参数:想要捕获的异常类型 System.out.println("Error"); } catch(Exception e){ System.out.println("Exception"); }catch(Throwable t){} finally { //处理善后工作,无论出不出异常,fianlly里面的话终究会被执行 System.out.println("finally"); } } } package com.exception; public class Test2 { public static void main(String[] args) { //如果不用try catch,遇到错误程序直接停止,捕获后,程序会继续往下执行,想办法把错误在catch里面把他处理了 try { new Test2().test(1, 0); } catch (ArithmeticException e) { e.printStackTrace(); } finally { } } /* //Ctrl+Alt+T 自动抛出异常 try { if(b==0){ //主动抛出异常 throw 注意和throws区分 throw new ArithmeticException(); //主动抛出异常 } System.out.println(a/b); } catch (Exception e) { e.printStackTrace(); //打印错误栈信息 } finally { } } */ //假设这个方法中,处理不了这个异常,方法上抛出异常,上面需要把它捕获 public void test(int a, int b) throws ArithmeticException{ if (b == 0) { throw new ArithmeticException(); //主动抛出异常,一般在方法中使用 } } } -
自定义异常
我在青春的田野里挥洒汗水和辛勤,希望在未来收获成熟与睿智

浙公网安备 33010602011771号