异常和断言2
来源:互联网 发布:淘宝店铺618活动策划 编辑:程序博客网 时间:2024/05/22 12:07
1.在方法中抛出异常
若某个方法可能会发生异常,但是不想在当前的方法中处理这个异常,则可以使用 throws 、 throw 关键字在方法中抛出异常。
1.1 throws关键字抛出异常
throws 关键字通常被应用在声明方法时,用来指定方法可能会抛出的异常。多个异常可使用逗号分隔开。
注意:子类重写父类方法时不能回避比父类方法异常更大的异常
使用throws回避异常的示意图
1.2 throw关键字抛出异常
throw关键字通常用于方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即终止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法的声明中指明要抛出的异常;如果要捕捉throw抛出的异常,则必须是try-catch语句块。
示例代码1:
package dong.test;public class ExceptionTest { public static void main(String[] args) { try{ int i = 100/0; System.out.println(i); }catch(Exception e){ System.out.println("1"); }finally{ System.out.println("2"); } System.out.println("3"); }}
运行结果:
1
2
3
示例代码2:在catch中throw抛出一个异常
package dong.test;public class ExceptionTest { public static void main(String[] args) { try{ int i = 100/0; System.out.println(i); }catch(Exception e){ System.out.println("1"); throw new RuntimeException(); }finally{ System.out.println("2"); } System.out.println("3"); }}
运行结果:不会执行打印“3”语句。
1Exception in thread "main" 2java.lang.RuntimeException at dong.test.ExceptionTest.main(ExceptionTest.java:11)
1.2.1 throw和throws关键字的区别
- throw:用于抛出异常对象,用在函数内;
- throws:用于抛出异常类,后面跟的是异常类名,可以有多个,用逗号隔开;throws用在函数上。
1.2 自定义异常
用户只需要继承Exception类或者其子类即可自定义异常类。
所以自定义异常类 必须是Exception类的子类或者是Exception子类的子类
自定义异常步骤:
- 创建自定义异常类;
- 在方中通过throw关键字抛出异常对象;
- 如果在当前的抛出异常的方法中处理异常,那么可以使用try-catch语句块来捕获并处理异常,否则在方法的声明中通过throws关键字指明要抛出给方法调用者的异常,继续下一步操作;
- 在出现异常的方法的调用者中捕获并处理异常。
3.演示代码
1.首先创建一个自定义异常类MyException
package com.dong.test;public class MyException extends Exception{ public MyException(String errorMessage){ super(errorMessage); }}
2.编写一个测试类
package com.dong.test;public class TestMyException { public static void main(String[] args){ try { int result = avg(0,-9); System.out.println(result); } catch (MyException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } } //throws 指定该方法可能抛出MyException异常 private static int avg(int i, int j) throws MyException { if(i<0||j<0){ throw new MyException("不可以使用负数");//throw 抛出自定义异常对象 } return i/j; }}
补充:
当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() ;
printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
运行结果:
com.dong.test.MyException: 不可以使用负数
at com.dong.test.TestMyException.avg(TestMyException.java:18)
at com.dong.test.TestMyException.main(TestMyException.java:6)
- 异常和断言2
- 了解异常和断言
- 异常和断言1
- 异常和断言3
- 错误码、异常和断言
- 异常和断言的区别
- 【面向对象】异常和断言
- python异常处理和断言
- 异常、日志、断言和调试
- 异常、断言、日志和调试
- 7 异常、断言和日志
- 第十章 异常和断言
- java 异常、断言和日志
- 11 异常, 日志, 断言和调试
- 笔记:异常、日志、断言和调试
- Java的异常、断言、日志和调试
- try块和异常处理,断言assert
- 内部类、异常、断言和Loger日志
- Linux I2C framework(2)_I2C provider
- android logcat 命令详解
- 交换机数据转发原理
- python中使用selenium错误Geckodriver executable needs to be in PATH’
- ViewPager+RecyclerView联动
- 异常和断言2
- Java基础之动态编译
- Oracle客户端使用
- Android中集成讯飞语音,语音转文字以及文字转语音操作
- Codeforces 864E (Codeforces Round #436 (Div. 2)) E. Fire 背包输出路径
- STM8 如何自制BootLoader并实现在线升级
- bootstrap后台 uniform.default.css 使用checkbox 默认选不中问题
- Spring4.x:Spring Aware
- web项目:漏洞修复(3)_spring过滤器(1)