异常

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主动抛出异常相关推荐

  1. Java 如何抛出异常、自定义异常、手动或主动抛出异常

    Java 如何抛出异常.自定义异常.手动或主动抛出异常 参考文章: (1)Java 如何抛出异常.自定义异常.手动或主动抛出异常 (2)https://www.cnblogs.com/panchang ...

  2. java中循环里使用throw new抛出异常问题

    在一个循环里如果使用throw new抛出异常 如下 那么就会直接终止循环操作,下边的业务代码就都不会执行. 解决办法就是不要再循环里加入throw new抛异常, 建议直接记录日志就好,然后用 co ...

  3. java的throw_浅谈Java的throw与throws

    浅谈Java异常 以前虽然知道一些异常的处理,也用过一些,但是对throw和throws区别还是有不太清楚.今天用实例测试一下 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被 ...

  4. JAVA 异常 throw 与 throws

    最近一直throw和throw new -- 获取头部罢工,要彻底生气清楚这件事,他对这个思想精华收集了很多网友.这里摘录. throws全部异常信息 throw则是指抛出的一个详细的异常类型. 通常 ...

  5. Android: 主动抛出异常调试

    Java 主动抛出异常来获得调试信息: try { throw new Exception(); } catch (Exception e) { Log.e(TAG, "Exception: ...

  6. python 自定义异常和主动抛出异常(raise)的操作

    前言 有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出.注意,自定义异常只能由自己抛出.python解释器是不知道用户自定义异常是什么鬼的. raise语 ...

  7. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  8. [Java]关于throw,throws,try{}catch(){}

    一.异常的产生 1. 在java代码中,如果发生异常,JVM就会中断程序代码的运行,然后创建异常对象并抛出.例如: int a=2, b=0; int i=a/b;  //除数不能为0,发生异常 Sy ...

  9. throws java_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

最新文章

  1. _DataStructure_C_Impl:Dijkstra算法求最短路径
  2. 【深度学习】深度学习预测房价:回归问题,K折交叉
  3. 51nod 1632 B君的连通
  4. cast()函数用法
  5. CJOJ 2171 火车站开饭店(树型动态规划)
  6. 嵌入式论文3000字_普通期刊发表论文费用是多少
  7. pylot网站压力测试
  8. (原文)基于甘特图的深度强化学习方法求解端到端在线重调度
  9. 软件开发报价计算方式
  10. vue项目实战(移动端)
  11. matlab语音信号处理/滤波器降噪/时域频域、归一化图谱
  12. Racket 的诞生与发展
  13. 跳棋编程c语言代码,跳棋游戏C语言程序设计(数据结构课程设计).doc
  14. 终于把Edison板子上线了
  15. 【MOOS系统安装步骤】
  16. 小程序跳转无反应解决方法
  17. 搭建IIS服务器发布ASP网站
  18. Dev-C++游戏创作之金山打字通(附带音乐)
  19. 小米2s 用线刷,刷回MIUI V5了
  20. Http请求工具类:Get/Post

热门文章

  1. 【U3D入门小白教程——案例篇】之二:全民打飞机
  2. 2015年阿里、网易、中兴、华为、美团等Java研发工程师面试心得
  3. centos中如何创建一个txt文件
  4. Android调用磁力传感器,获取当前磁力值
  5. DBeaver Enterprise21.0 企业版激活方法 DBeaver mac激活 DBeaver
  6. Nginx (深度好文)
  7. 2013 04 24 IELTS陌生词汇260条
  8. Vite、Pinia 新一代项目工程化
  9. 计算机编目会遵循什么格式,编目的必备字段有哪些?
  10. iOS APP打包上架-账号创建_谷歌应用商店上架