(36)RuntimeException和创建自定义的RuntimeException子异常类和一些例子
来源:互联网 发布:软件项目汇报 模板 编辑:程序博客网 时间:2024/06/11 07:52
一、Exception中有一个特殊的子类异常Runtime运行时异常。
①如果在函数内部抛出该异常,函数上可以不用声明,编译一样通过。
②如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。
之所以不用再函数上声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码修正
①举个栗子
函数定义的没有问题,是调用者乱传参数造成的,就不会有return a/b;更不会执行调用处之后的语句,程序就此停掉,让调用者自己修改参数去。
public int div(int a,int b) { if(b<0) { throw new ArithmeticException(); } return a/b; }public static void main(String[] args) { Demo4 d=new Demo4(); int x=d.div(4, 0); System.out.println("x="+x); }
②举个栗子
若在函数上声明异常,就是希望调用者能够处理这个异常,如果调用者给了处理方式,相当于这个问题就被隐藏(这段程序相当于没执行,就继续后面的程序)
不声明,就不会进行异常处理,说明调用者只要传值错误,就会程序停止,自己改去,必须让调用者知道发生了什么事!!
还有IndexOutOfBoundsException异常,根本就没这个下标,函数就无法继续进行,停掉,调用者自己改去
public int div(int a,int b) throws ArithmeticException { return a/b; }public static void main(String[] args) { Demo4 d=new Demo4(); int x=d.div(4, 0); System.out.println("x="+x); }
二、空指针异常
public class Demo5 {public String name;public void checkName(String name) {if(name.equals("lisi")) // new NullPointerException() 都没有传入值,根本无法比较,程序应该停掉 { //若对程序修改,防止异常的发生,可以这样修改if(name!=null&&name.equals("lisi"))System.out.println("Yes");}else System.out.println("No");} public static void main(String[] args) { Demo5 d=new Demo5(); d.checkName(null);// java.lang.NullPointerException}}
自定义异常:如果该异常的发生,无法再继续进行运算,就让自定义异常继承RuntimeException类。
三、自定义RuntimeException子类异常例子
这样创建异常对象,但没声明,就是b<0,之后根本就没法算,程序停掉,调用者自己改去
public class ExceptionFuShu extends RuntimeException{ExceptionFuShu(String message ){ super(message);}}public class Demo4 { public int div(int a,int b) { if(b<0) { throw new ExceptionFuShu("除数不能为负数啊!!"); } return a/b; } public static void main(String[] args) { Demo4 d=new Demo4(); int x=d.div(4, -9); System.out.println("x="+x); } }
四、Object类方法异常例子:
wait
public final void wait(long timeout) throws InterruptedException【只抛出一个异常】
- 抛出:
IllegalArgumentException
- 如果超时值为负。IllegalMonitorStateException
- 如果当前线程不是此对象监视器的所有者。InterruptedException
- 如果在当前线程等待通知之前或者正在等待通知时,任何线程中断了当前线程。在抛出此异常时,当前线程的中断状态 被清除。
五、异常分为两类:
①编译时被检测的异常(抛,trycatch或者抛)
②编译时不被检测的异常(运行时异常:RuntimeException)
阅读全文
0 0
- (36)RuntimeException和创建自定义的RuntimeException子异常类和一些例子
- 自定义异常(Exception)和运行时异常(RuntimeException )
- 面向对象之自定义异常和RunTimeException
- RuntimeException和非RuntimeException的区别
- RuntimeException和非RuntimeException的区别
- 简述RuntimeException和非RuntimeException的区别
- 自定义异常---RuntimeException
- 自定义异常--继承RuntimeException
- RuntimeException和非RuntimeException区别
- Exception类和RuntimeException类的区别
- Error和Exception、RuntimeException和非RuntimeException的区别
- Exception和RuntimeException的区别
- Exception和RuntimeException的区别
- 特殊异常造成RuntimeException和ClassNotFoundException
- 几个问题(六)-------error和exception的区别,RuntimeException和非RuntimeException的区
- 常见的RuntimeException异常
- 一些常见的RuntimeException
- 一些常见的RuntimeException
- 理解单例模式
- 云服务器 ECS CentOS 7配置默认防火墙 Firewall
- PHP接口开发签名验证原理详解
- AtCoder-2362 (dfs+优化)
- python:html元素解析
- (36)RuntimeException和创建自定义的RuntimeException子异常类和一些例子
- POJ 2229 Sumsets
- git忽略已跟踪的文件状态
- Python3.x与Python2.x关于sorted函数用法比较
- centos6.5安装MATLAB
- RabbitMQ消息分发模式----"Topic"主题模式
- jsoup介绍
- 底层驱动更改camera预览大小(rk)
- Java线程之线程池--类ThreadPoolExecutor