Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。
• Runtime异常:所有的RuntimeException类及其子类的实例;
• Checked异常:不是RuntimeException类及其子类的异常实例。

只有Java语言提供了Checked异常,其他语言都没有提供Checked异常。Java认为 Checked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked 异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误,无法通过编译。
Checked异常体现了Java的设计哲学:没有完善错误处理的代码根本就不会被执行!
Runtime异常则更加灵活,Runtime异常无须显式声明抛出,如果程序需要捕获 Runtime异常,也可以使用try…catch块来实现。

一.使用throws抛出异常
使用throws声明抛出异常的思路是,当前方法不知道如何处理这种类型的异常,该异常应该由上级调用者处理;如果main方法也不知道如何处理这种类型的异常,也可以使用throws声明抛出异常,该异常将交给JVM处理。JVM对异常的处理方法是,打印 异常的跟踪栈信息,并中止程序运行。
如下示例:

public class ThrowsDemo {public static void main(String[] args) {//throws Exception  虚拟机在处理// 数组索引越界 ArrayIndexOutOfBoundsException//String[] strs = {"1"};// 数字格式异常 NumberFormatException//String[] strs = {"1.8,1"};// 算术异常(除零) ArithmeticExceptionString[] strs = {"18","0"};//intDivide(strs);//虚拟机在处理try {//当 main 方法也不想处理,把异常抛出去,就是java 虚拟机在处理intDivide(strs);} catch (Exception e) {System.out.println("main 异常处理");e.printStackTrace();}      }       public static void intDivide(String[] strs)throws ArrayIndexOutOfBoundsException,IndexOutOfBoundsException,NumberFormatException,ArithmeticException{       int a = Integer.parseInt(strs[0]);int b = Integer.parseInt(strs[1]);int c = a/b;             System.out.println("结果是:"+c); }
}

结果如下:

二.使用throw抛出异常
Java也允许程序自行抛出异常,自行抛出异常使用throw语句来完成(注意此处的 throw没有后面的s)。
如果需要在程序中自行抛出异常,则应使用throw语句,throw语句可以单独使用, throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。
如下示例:

public class ThrowDemo {public static void main(String[] args) {//数组索引越界 ArrayIndexOutOfBoundsExceptionString[] str1 = {"1"};// 数字格式异常 NumberFormatException//String[] str2 = {"1.8,1"};// 算术异常(除零) ArithmeticException//String[] str3 = {"18","0"};  try {intDivide(str1);} catch (Exception e) {e.printStackTrace();}       }       public static void intDivide(String[] str0) throws Exception{       try {int a = Integer.parseInt(str0[0]);int b = Integer.parseInt(str0[1]);int c = a/b;System.out.println("结果是:"+c);                         }catch (ArrayIndexOutOfBoundsException e) {throw new Exception("数组索引越界");}catch (IndexOutOfBoundsException e) {throw new Exception("索引越界");}catch (NumberFormatException e) {throw new Exception("数字转换失败");}catch (ArithmeticException e) {throw new Exception("计算错误");}    catch (Exception e) {System.out.println("其他异常");e.printStackTrace();}             if (str0.length<2) {//自行抛出 Exception异常//该代码必须处于try块里,或处于带 throws声明的方法中throw new Exception("参数个数不够");}           if (str0[1]!=null && str0[1].equals("0")) {//自行抛出 RuntimeException异常,既可以显式捕获该异常//也可完全不理会该异常,把该异常交给该方法调用者处理throw new RuntimeException("除数不能为0");}int a = Integer.parseInt(str0[0]);int b = Integer.parseInt(str0[1]);int c = a/b;System.out.println("结果为:"+c);}
}

结果如下:

Java异常处理throws/throw相关推荐

  1. java异常处理之throw, throws,try和catch

    转自 http://blog.csdn.net/zhouyong80/article/details/1907799  程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...

  2. java异常处理的throw和throws的区别

    1. 区别 throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是指抛出的一个具体的异常类型. 2.分别介绍 ...

  3. 学习-Java异常处理之throw之酒店入住

    任务描述 本关任务:接收给定的一个整数(年龄),当年龄小于 18 岁或者大于 90 岁时,抛出一个异常(Exception),提示"18岁以下,90岁以上的住客必须由亲友陪同":当 ...

  4. 多态的概念、对象上下转型、多态的应用、异常(异常概念、异常分类、java异常处理机制、try...catch...finally、throw和throws、自定义异常)

    多态的概念: 多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果. 多态存在的三个必要条件: ① 需要存在继承或实现关系 ② 同样的方法调用而执行不同的操作.运行不同代码(重写 ...

  5. Java 异常处理 try catch finally throws throw 的使用和解读(一)

    最近的一个内部表决系统开发过程中, 发现对异常处理还存在一些模棱两可的地方, 所以想着整理一下 主要涉及到: 1.try catch finally throws throw 的使用和解读 2.自定义 ...

  6. java异常处理机简答题,【简答题】JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义?...

    [简答题]JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义? 更多相关问题 用蒸汽进行设备管线吹扫时,应将被吹扫的设备管线,相应 ...

  7. java 异常处理的关键字_java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类...

    packagecn.kecheng;importjava.util.Scanner;/**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中通过异常 ...

  8. java throw 和catch_java异常处理之throw, throws,try和catch

    转自 http://blog.csdn.net/zhouyong80/article/details/1907799 程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现致 ...

  9. java异常throws怎么用,throw_JAVA的throw和throws怎么用!

    广告位API接口通信错误,查看德得广告获取帮助 JAVA的throw和throws怎么用! throw是语句抛出一个异常:语法:throw(异常对象): 扩展资料: throw与throws的区别 1 ...

最新文章

  1. 01_创建一个新的activityactivity配置清单文件
  2. 线性判别分析LDA的数学原理(二)
  3. http中的请求头各部分都是什么意思_小前端探索HTTP
  4. 吾解——HTTP(超文本传输协议)
  5. 初学者是学习 C 语言还是 C++ 好?各有何利弊?
  6. python】字符串练习题
  7. 淘宝 京东 拼多多 唯品会返利 公众号开发
  8. 中国宽带可调谐飞秒激光器行业市场供需与战略研究报告
  9. css鼠标移入变小手
  10. Delphi XE10.4字体字号对应的Font Size的点或像素换算
  11. 对于拖延症的最好方法
  12. HDU 4585 Shaolin (STL)
  13. 独孤求败-小滴云架构大课十八式【xiaoecf】
  14. ZZULIOJ:1156: 单数变复数
  15. PHP练习6 使用MySQL实现简单身份验证
  16. 1833 雪糕的最大数量
  17. 找工作,要做就做最好的自己,大平台去闯闯,一定不要让未来后悔!~附简历...
  18. OpenCV学习:基础图像操作 (四):绘制几何图形
  19. 重磅综述|Nat Rev Gastroenterol Hepatol:人类胃肠道中的产甲烷古菌
  20. 信息学竞赛中可能用到的初等数论

热门文章

  1. windows 7搭建流媒体服务
  2. linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF
  3. 微博air客户端_打磨近十年,接近「完美」的 macOS 第三方微博客户端:Maipo
  4. 手写tomcat socket closed_【消费电子】:重在阅读,新增手写 BOOX Nova Pro 体验评测...
  5. android studio内置终端,Android Studio Terminal xx不是内部或者外部命令
  6. php进入文件目录,php文件目录操作
  7. android serialport new 软件退出_基于Android9.0,了解Android启动流程
  8. Asterisk针对Mysql的extconfig.conf配置
  9. 如何在asterisk中限制呼叫路数?
  10. 网络编程模型综述 之 成熟的IO框架介绍