本章目标
掌握throws与throw关键字的作用
掌握Exception与RuntimeException的区别
可以自定义异常类
了解断言的作用及应用
throws关键字
在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,而交给方法的调用处进行处理 。
throws使用格式
——public 返回值类型 方法名称(参数列表…) throws 异常类{}
使用throws关键字
class Math{ public int div(int i,int j) throws Exception{//本方法中可以不处理异常 int temp = i/j;//此方法有可能产生异常 return temp;//返回计算结果 } } public class ThrowsDemo01 { public static void main(String[] args) { Math m = new Math();//实例化 Math 对象 try{//因为有 throws ,不管是否有异常,都必须处理 System.out.println("除法操作:"+m.div(10,2)); }catch(Exception e){ e.printStackTrace();//打印异常 } } /* 结果: * 除法操作:5 * */ }
在主方法处使用throws关键字
class Math{ public int div(int i, int j) throws Exception{//方法可以不处理异常 System.out.println("******** 计算开始 ********"); int temp = 0;//声明整型变量 try{ temp = i/j;//如果产生异常,则执行 catch }catch(Exception e){//捕获异常 throw e;//把异常交给被调用处 }finally{//不管是否产生异常都执行此代码 System.out.println("******** 计算结束 ********"); } return temp; } } public class ThrowDemo02 { public static void main(String[] args) { Math m = new Math();//实例化 Math 对象 try{ System.err.println("除法操作:"+m.div(10, 0)); }catch(Exception e){//进行异常的捕获 System.out.println("异常产生:"+e); } } /* 结果: * ******** 计算开始 ******** * ******** 计算结束 ******** * 异常产生:java.lang.ArithmeticException: / by zero * */ }
throw关键字
与throws不同的是,可以直接使用throw抛出一个异常。抛出的时候直接抛出异常类的实例化对象即可。
抛出异常
public class ThrowDemo01 { public static void main(String[] args) { try{ throw new Exception("自己抛出的异常!");//抛出异常的实例化对象 }catch(Exception e){//捕获异常 System.out.println(e); } } /* 结果: * java.lang.Exception: 自己抛出的异常! * */ }
范例 —— throw与throws的应用
class Math{ public int div(int i,int j) throws Exception{//本方法中可以不处理异常 int temp = i/j;//此方法有可能产生异常 return temp;//返回计算结果 } } public class ThrowsDemo02 { //本方法中的所有异常都可以不使用 try....catch 处理 public static void main(String[] args) throws Exception { Math m = new Math();//实例化 Math 对象 System.out.println("除法操作:"+m.div(10,2)); } /* 结果: * 除法操作:5 * */ }
程序执行流程
Exception与RuntimeException
这两个类的区别如下:
——Exception在程序中是必须使用try…catch进行处理
——RuntimeException可以不使用try…catch进行处理,但是如果有异常产生,则异常将由JVM进行处理
自定义异常类
在Java中已经提供了大量的异常类,但是这些异常类有些时候也很难满足开发者的要求,所以此时用户可以根据自己的需要定义自己的异常类,定义异常类,只需要继承Exception类即可。
class MyException extends Exception{//自定义异常类,继承 Exception 类 public MyException(String msg){//构造方法接收异常信息 super(msg);//调用父类中的构造方法 } } public class DefaultException { public static void main(String[] args) { try{ throw new MyException("自定义异常。");//抛出异常 }catch(Exception e){//异常处理 System.out.println(e); } } /* 结果: * J020702.DefaultException.MyException: 自定义异常。 * */ }
断言(assert)
在JDK 1.4之后,Java中增加了断言的功能,那么什么叫断言呢?断言就是肯定某一个结果的返回值是正确的,如果最终此结果的返回值是错误的,则通过断言检查肯定会为用户提示错误信息。断言的定义格式如下所示:
——assert boolean表达式 ;
——assert boolean表达式 : 详细的信息
使用断言
public class Test {
public static void main(String args[]){
int x[] = {1,2,3} ; // 定义一个数组,长度为3
assert x.length == 0 ; // 此处断言数组长度为0,肯定是错误的
}
}
编译程序:javac Test.java
验证程序:java –ea Test
输出断言的提示信息
public class Test {
public static void main(String args[]){
int x[] = {1,2,3} ; // 定义一个数组,长度为3
assert x.length == 0 : "数组长度不为0" ;
// 此处断言数组长度为0,肯定是错误的
}
}
相关推荐
文章目录1. 异常概念2. 异常分类体系3. 异常的抛出方式:throw & throws & 默认4....另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。 2. 异常分类体系 Thr
中断向量的概念就是由此引出的,其实它就是一个被送通往CPU数据线的一个整数。CPU给每个IRQ分配了一个类型号。 中断有很多类,可能是外部硬件触发,也可能是由软件触发,对于CPU来说,中断处理的过程都是一样的:...
已学习Python语句的顺序结构和条件分支结构和循环结构,一般程序都可编写,可以学习异常处理这个概念,来对程序编写过程中遇到的问题进行处理,并提高编程技能。 不足之处是对前面所学的知识掌握不够扎实。下图是对...
对于这个简短的概念提案,阿尔伯特·爱因斯坦博士的“可视化思想实验(德语:Gedanken实验)”被用作了解抗癌剂或促癌剂如何带来5'-非翻译区一级结构的基本工具。 p27Kip1 mRNA变成两个备选二级结构
__________________________________ 特别声明: 本光盘中的源程序以及资源文件仅可作为学习和参考之用,未经许可不得用于任何商业等其它用途。 <br>________________________________________________...
“消除彩色血流图像中速度异常点的方法”发明专利是一个全新的概念,首次提出了基于符号位空时优化血流速度图像的方法,可以最大程度消除彩色血流图像中的速度异常点,提高血流方向检测的准确性和可靠性。...
第十季主要是给大家介绍一下:包的作用及使用、Java访问控制修饰符、Java非访问控制修饰符、Java中异常的概念、Exception类的层次、Java内置异常类、捕获异常、多重捕获块‘、throws关键字、finally关键字。
● 操作系统的基本概念 ● 定义 ● 是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。 ● ...
fast_io是基于C ++ 20概念的C ++通用异常安全RAII I / O库。 它至少比cstdio或iostream快十倍。 fast_io fast_io是一个新的C ++ 20库,用于极快的输入/输出,旨在取代iostream和cstdio。 它仅是标头(以后仅提供模块...
生活质量QLAD是查询日志分析和检测平台的名称,旨在... 有关其他背景信息,演示文稿和屏幕截图,请参阅文档/文件夹。 架构概述:各种笔记录取带有pcap文件的S3存储桶:存储桶与名称服务器具有相同的名称,例如s3://m
无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...
定义了一个新的频繁模式和相对应的异常度概念。对863-917网络安全监测平台提供的全国流量数据进行了实验,得出对应于“橙色八月”的2006年8月上旬流量严重异常的结论。通过与相关的其他传统算法进行对比,如使用绝对...
数据访问困难(difficulty in accessing data) 1.2.2 数据库检索系统⾯临的挑战 数据库检索系统⾯临的挑战 数据孤⽴ 完整性问题 加⼊新约束时,与原有约束的协调问题 原⼦性问题 并发访问异常 安全性问题 1.3 数据...
⼤数据和⼈⼯智能的概念 ⼤数据和⼈⼯智能的概念 概述⼤数据和⼈⼯智能领域的⼀些热门趋势。我们将看到世界如何通过数字化⽽改变,从⽽导致消费和⼯业领域的⼤数据现象;了解到数据 量呈指数级增长,从太字节到艾...
java语言是一种易学易用的网络设计语言,它有简单易学、面向对象、动态性、解释执行性、多线程性、安全性和健壮性等特点。在众多的特点中,笔者重点研究java的健壮性。...相当其它语言来说,java语言摒弃了指针的概念...
10.2.11其他 124 10.3算法 125 10.3.1算法基础 125 10.3.2STL算法中函数对象和谓词 138 10.3.3常用的遍历算法 148 10.3.4常用的查找算法 152 10.3.5常用的排序算法 154 10.3.6常用的拷贝和替换算法 156 10.3.7常用的...
前面的判断过程中并没有加锁,因此可能在execute方法判断的时候poolSize小于corePoolSize,而判断完之后,在其他线程中又向线程池提交了任务,就可能导致poolSize不小于corePoolSize了,所以需要在这个地方继续判断 ...
异常是程序在运行时出现的错误或异常情况。JAVA中的异常可以通过try-catch块来捕获和处理。 什么是泛型? 泛型是JAVA 5引入的一个新特性,它允许在定义类、接口和方法时使用类型参数。这样可以使代码更加通用和灵活...