异常基础篇_对throws和throw的理解,自定义异常
来源:互联网 发布:健身行业数据 编辑:程序博客网 时间:2024/06/06 13:58
throws
在因为调用div方法的main()方法没有catch语句,所以报错
class Demo{ int div(int a,int b)//throws Exception//关键字标记该代码快可能会出现问题,编译时会检测是否有catch语句,没有会提示 { return a/b; }//throws为关键字,此方法会向外抛出吧处理异常的任务交给上一级(让调用此方法的方法来解决异常)}class YichangDemo { public static void main(String[] args) { new Demo().div(4,1); System.out.println("Hello World!"); }}
如把throws Exception注释掉,没有此标记,编译时就提示catch(没有声明说此代码可能会出现问题)
class Demo{ int div(int a,int b)//throws Exception//关键字标记该代码快可能会出现问题,编译时会检测是否有catch语句,没有会提示 { return a/b; }//throws为关键字,此方法会向外抛出吧处理异常的任务交给上一级(让调用此方法的方法来解决异常)}class YichangDemo { public static void main(String[] args) throws Exception { int c=new Demo().div(4,1); System.out.println(c); }}
在两个方法中都用throws抛出,异常会交给main方法上一级(虚拟机)处理
我们可以调用throw标记的div方法,然后在其上一级中书写catch语句,捕获异常如:
class Demo{ int div(int a,int b)//throws Exception//关键字标记该代码快可能会出现问题,编译时会检测是否有catch语句,没有会提示 { return a/b; }//throws为关键字,此方法会向外抛出吧处理异常的任务交给上一级(让调用此方法的方法来解决异常)}class YichangDemo { public static void main(String[] args) { try{ int c=new Demo().div(4,0); System.out.println(c); } catch (Exception e){ System.out.println(e); } System.out.println("over"); }}
——————————————————————————————
运行结果:
多异常:
try{...}catch(ArithmeticException e){...}catch(ArrayIndexOutOfBoundException){}{...}
注意:
1.一个try语句可能会报出多种不同的异常,所以在声明异常时,尽量声明更为具体一些。这样处理的也更具体
2.声明几个异常,理论上应该有几个相应的catch语句对异常进行处理,
3.如果出现多个catch语句,并且有继承关系,如Exception,ArithmeticException,父类语句放在最后面。(如果放在其他catch语句前,编译时会报异常)
4.在进行catch处理时,要定义具体的处理方式,不要简单的只有一条输出语句报出异常信息。
自定义异常:
自定义一个异常类:
需要手动抛出
class FuShuException extends Exception{}
代码示例
class FuShuException extends Exception{ FuShuException(String msg){//构造函数,定义此异常新信息, //也可以自定义构造函数,个人那句自己开发的需要,决定传入的参数,异常信息 super(msg);//父类有获取异常信息的方法,不用再写 }}public class Demo { public int div(int a,int b)throws FuShuException,ArithmeticException{//在div里面的语句中用了throw, //所以在此声明throws,抛出异常,交给上一级处理 if(b<0) throw new FuShuException("出现了除以负数的情况");//手动通过throw关键字抛出自定义异常传入了异常信息 return a/b; } public static void main(String[] args){ Demo a=new Demo(); try{ int x=a.div(5,-1); System.out.println("程序正常:"+x); } catch(FuShuException e){ System.out.println("异常处理,进入自定义异常"); System.out.println(e); } catch(ArithmeticException e){ System.out.println("异常处理,除0"); System.out.println(e); } System.out.println("over"); } }
注意:自定义的异常必须是自定义的一个类继承了Exception(或者Throwable(不建议))
在需要抛出自定义异常的方法中,用throws语句标记此方法,代表抛出,在具体的可能会有异常的语句中,用throw抛出自定义异常。
用了throws和throw后必须要在上一级方法中用catch语句捕获,进行处理异常。
throws:是用在函数上,后面跟异常类,可以多个,用,隔开
throw:使用在函数内,后跟异常对象,如自定义的异常对象,在抛出对象时使用
- 异常基础篇_对throws和throw的理解,自定义异常
- 异常的形式、自定义异常、throw和throws的区别
- 自定义异常\throws\throw
- 【黑马程序员】说一说我对java异常体制中throws和throw的理解
- java自定义异常以及throws和throw的区别
- 黑马程序员_内部类,异常,自定义异常,RunTimeException, throw和throws
- Java 异常 throw和throws的区别
- 异常处理throw和throws的区别
- java 异常 throw 和 throws 的区别
- java异常处理的throw和throws
- java异常throws和throw的比较
- Java_基础—throws的方式处理异常/throw和throws区别
- 抛出异常throw和throws
- Java异常----自定义异常类(throw和throws关键字的用法)
- 异常(try……catch……finally、throws和throw的区别、自定义异常)
- 异常,异常的使用,Throw和Throws的区别,
- 自定义异常,throw,throws和带你去旅行
- JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别
- jquery实现注册表单验证
- 网易2018校园招聘编程题真题-[编程题] 相反数
- 第一次在CSDN上写文章,以TensorFlow的使用教程开始
- 使用Idea新建Spring Boot项目
- touxiang
- 异常基础篇_对throws和throw的理解,自定义异常
- MyBatis传入参数为集合 list 数组 map写法
- 实验2.4 运用静态链表实现对数据的基本操作
- GPIO工作原理(stm32F10x)
- win7和ubuntu下搭建VPS和shadowsock
- angular排序
- OkHttp的Get和Post
- gcc
- 编程计算并输出半径r=5.3的圆的半径的周长与面积