关于Java通过throw主动抛出异常
异常
Java提供了许多异常自动处理机制,这里主要聊一下异常的主动抛出
异常处理机制
异常处理五个关键字 try、catch、finally、throw、throws
try—catch—finally
int a = 1;
int b = 0;
try{System.out.println(a/b);
}catch(异常的类 对象){//要进行的操作
}finally{//无论是否出现异常,finally都会执行
}
解释
当try中的保护代码块出现异常时,异常会作为参数与catch中声明的异常类型进行匹配,匹配成功则运行对应catch的代码块
- 不管是否出现异常,会继续执行后续代码
注意
- 可以有多个catch,异常类型由上往下判断,且众多catch代码块只执行一个
- catch捕获的异常类型,范围小的放上面
- finally可以不要
throw主动抛出异常
对于明显的不合法操作,可以通过throw主动抛出异常
一般在方法中使用
public void test(int a,int b) throws ArithmeticException{if(b == 0){//若b==0,主动抛出异常throw new ArithmeticException();
}else{System.out.println(a/b);}
}
throws抛出异常
假如方法中解决不了这个异常,在方法上抛出异常
public void test(int a,int b) throws 异常类型{//要写出什么时候会抛出异常
}
注意
如果在一个方法后面用 throws 声明了可能抛出的异常类型,在调用该方法时必须必须用 try 包含方法,且在 catch 一一声明对应的异常
public class main {//方法test声明可能抛出的两种异常public void test(int a) throws Exception1,Exception2 {//若a>50时抛出一个异常if(a>50)throw new Exception1(a);if(...)
}
try {//使用该方法时要用trynew main().test(60);System.out.println("1554");//分别捕获对应的异常} catch (Exception1 e) {e.say();}catch (Exception2 d){}
以上方式让调用代码的人通过try—catch的方式对异常进行捕获
另一种方式
也可以在方法内部捕获异常
//定义一个除法运算的方法
public double divide(double a,double b) {//若除数为令,抛出异常if(b==0){try{throw new Exception1(b);//在方法里面捕获异常}catch (Exception1 e){e.toString();}}return a/b;
}
在此时在调用方法时则不需要调用者捕获异常
public static void main(String[] args) {main m = new main();//此时不需要用try—catch捕获异常System.out.println(m.divide(1,0));}
}
关于Java通过throw主动抛出异常相关推荐
- Java 如何抛出异常、自定义异常、手动或主动抛出异常
Java 如何抛出异常.自定义异常.手动或主动抛出异常 参考文章: (1)Java 如何抛出异常.自定义异常.手动或主动抛出异常 (2)https://www.cnblogs.com/panchang ...
- java中循环里使用throw new抛出异常问题
在一个循环里如果使用throw new抛出异常 如下 那么就会直接终止循环操作,下边的业务代码就都不会执行. 解决办法就是不要再循环里加入throw new抛异常, 建议直接记录日志就好,然后用 co ...
- java的throw_浅谈Java的throw与throws
浅谈Java异常 以前虽然知道一些异常的处理,也用过一些,但是对throw和throws区别还是有不太清楚.今天用实例测试一下 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被 ...
- JAVA 异常 throw 与 throws
最近一直throw和throw new -- 获取头部罢工,要彻底生气清楚这件事,他对这个思想精华收集了很多网友.这里摘录. throws全部异常信息 throw则是指抛出的一个详细的异常类型. 通常 ...
- Android: 主动抛出异常调试
Java 主动抛出异常来获得调试信息: try { throw new Exception(); } catch (Exception e) { Log.e(TAG, "Exception: ...
- python 自定义异常和主动抛出异常(raise)的操作
前言 有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出.注意,自定义异常只能由自己抛出.python解释器是不知道用户自定义异常是什么鬼的. raise语 ...
- java throw与throws_基于Java中throw和throws的区别(详解)
系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...
- [Java]关于throw,throws,try{}catch(){}
一.异常的产生 1. 在java代码中,如果发生异常,JVM就会中断程序代码的运行,然后创建异常对象并抛出.例如: int a=2, b=0; int i=a/b; //除数不能为0,发生异常 Sy ...
- throws java_基于Java中throw和throws的区别(详解)
系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...
最新文章
- _DataStructure_C_Impl:Dijkstra算法求最短路径
- 【深度学习】深度学习预测房价:回归问题,K折交叉
- 51nod 1632 B君的连通
- cast()函数用法
- CJOJ 2171 火车站开饭店(树型动态规划)
- 嵌入式论文3000字_普通期刊发表论文费用是多少
- pylot网站压力测试
- (原文)基于甘特图的深度强化学习方法求解端到端在线重调度
- 软件开发报价计算方式
- vue项目实战(移动端)
- matlab语音信号处理/滤波器降噪/时域频域、归一化图谱
- Racket 的诞生与发展
- 跳棋编程c语言代码,跳棋游戏C语言程序设计(数据结构课程设计).doc
- 终于把Edison板子上线了
- 【MOOS系统安装步骤】
- 小程序跳转无反应解决方法
- 搭建IIS服务器发布ASP网站
- Dev-C++游戏创作之金山打字通(附带音乐)
- 小米2s 用线刷,刷回MIUI V5了
- Http请求工具类:Get/Post