您的位置:首页 > 其它

常见异常以及处理方式

2018-12-07 21:04 169 查看

常见异常以及处理方式

1、异常体系(画图列举实例说明问题)
Throwable Error 错误:不可以处理的情况 Exception 异常:可以处理的情况 checked异常: 编译时异常 runtime异常: 运行时异常

2、异常的处理方式【重点】
a.JVM处理方式: 出现异常,终止程序往下执行 b.自己捕获处理: try...catch...finally 自己捕获处理 c.异常抛出的情况

![](E:\就业班\一阶段笔记\Java就业68期Day05\图片\【课堂案例】异常的处理方式 (抛出和捕获).PNG)

//测试类 public class Test { public static void main(String[] args) { //定义一个变量 int code = 0; //调用方法执行 try { method(320); //可能出现异常的代码 } catch (IOException e) { e.printStackTrace(); //出现异常之后的处理代码 code = 200; //获取到编码 }catch (NullPointerException e) { e.printStackTrace(); //出现异常之后的处理代码 code = 404; //获取到编码 }catch (Exception e) { e.printStackTrace(); //出现异常之后的处理代码 code = 500; //获取到编码 }finally { System.out.println("code = " + code); //始终都会执行 } } //定义方法.根据传入的参数不同.显示是否出现不同的异常 public static void method(int num) throws IOException,NullPointerException,Exception { //如果参数在什么范围,出现什么异常 if(num>100&&num<=200){ //出现一个IO异常 throw new IOException("祥锅,被美女迷了"); }else if(num>200&&num<=300){ //制造一个空指针 throw new NullPointerException("祥锅,被蚂蚁踩伤了"); }else if(num>300&&num<=400){ //制造一个异常 throw new Exception("祥锅,在三环被鹅了"); } System.out.println("祥锅,正常到长城园上班"); } }
3、自定义异常类
throws 抛出异常(写在方法的小括号后面) throw 制造异常(制造一个异常出来) throw new MyLoginException("制造异常");

//自定义编译时异常.代码写完,编译报错 public class MyException extends Exception { public MyException() { } public MyException(String message) { super(message); } } //自定义运行时异常.代码写完,不会报错,运行过程当中可能出错 public class MyRuntimeException extends RuntimeException { public MyRuntimeException() { } public MyRuntimeException(String message) { super(message); } } //测试类 public class Test { public static void main(String[] args) { //调用方法 try { method(210); } catch (MyRuntimeException e) { //处理运行时异常 e.printStackTrace(); }catch (MyException e) { //处理编译时异常 e.printStackTrace(); } } //定义一个方法.帮助我们测试 public static void method(int num) throws MyException,MyRuntimeException { //判断,在不同的范围当中,制造不同的异常 if(num < 0){ //制造编译时异常 throw new MyException("你的老师多恨你"); } if(num>100){ throw new MyRuntimeException("你的老师多爱你"); } System.out.println("分数:"+num); } }
4、异常的注意问题
a.子前父后(子类异常在前面写,父类异常在后面写) b.覆盖方法,父若不抛出.子只能捕获 c.finally 当中的 return 始终都会被执行到.

/父类【父类的方法是怎么处理,儿子就怎么处理】

public class FuClass { //没有异常的情况 public void show01(){} //存在异常 public void show02() throws IndexOutOfBoundsException{}
//存在异常 public void show03() throws IndexOutOfBoundsException{} //没有异常的情况 public void show04(){}

[子类]

public class ZiClass extends FuClass{ //没有异常的情况 @Override public void show01(){} //存在异常(不能抛出他爹) // @Override // public void show02() throws Exception{} //存在异常(可以抛出儿子) 儿子可以用到父亲的内容 @Override public void show02() throws ArrayIndexOutOfBoundsException{} //存在异常(可以抛出自己) @Override public void show03() throws IndexOutOfBoundsException{} //父亲没有异常儿子不能抛出,假设产生异常,这里只能自己私下处理。try..catch // @Override // public void show04() throws Exception{}
5、捕获异常快捷键

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: