1.在运行遇到各种各样的异常,开发过程中语法错误和逻辑错误不是异常---继承Throwable根接口
Java.lang.Throwable
|------Error:错误,程序不进行处理
|------Exception:异常,编写需要进行处理
异常分为:Error(JVM 内部的错误无法修改);在主程序 main(args)--栈溢出;堆空间内存溢出
exception:空间针访问,读取文件不存在和网络异常
Java异常的处理:抛出异常的处理:.class 文件
Java中 SQLException,IOException,ClassNotFoundException+RuntimeException(运行时异常)
java 提供的异常处理抓抛异常:执行代码时,一旦出现异常,在异常代码处生成相对应的异常类型
处理异常第一种方式:try--Catch--finally:finally 不管是否出现异常总会执行
Catch语句内部对异常对象的处理:自己输出;getMessage()--出现问题的地方 或者printStackTrace()---输出运行过程运行方式
自动的抛出异常(e.printStackTrace() +e.getMessage) + 手动抛出 throw new Exception(“ ”)---抛出Throwable下的异常
1.自定义异常类继承已有异常类 2.提供一个序列号,重载多个构造器 手动抛出,出现异常在已有异常中并没有,自定义的异常
3.子类重写父类时候,子类抛出异常不能比父类大
1 // 1.自定义异常类继承已有异常类 2 // 2.提供一个序列号,重载的构造器 3 public class MyException extends RuntimeException{ 4 5 static final long serialVersionUID = -7034897190745766939L; 6 7 public MyException() 8 {} 9 10 public MyException(String message) 11 { 12 super(message); 13 }
throw Vs throws: ****
throw y用于抛出异常手动抛出异常(异常的生成阶段)
throws:声明方法抛出各种异常类--在方法中对抛出异常进行声明(异常的处理方式)
throw--上流排污,throws---下流
注意 finally方法在比抛出异常在前面,抛出异常只有被Catch捕获才能被打e.prinStackTrace()印输出:throw 抛出异常抛出到主程序才被Catch到中因此输出顺序在后面
下面:Catch捕获在finally前面,抛出的异常只有被捕获才能输出
1 private void MethodA() { 2 try{ 3 4 System.out.println("进入到A方法"); 5 throw new Exception("异常类型错误"); 6 }catch(Exception e) 7 { 8 System.out.println(e.getMessage()); 9 } 10 finally{ 11 System.out.println("A 的finally"); 12 }