`
chaoyi
  • 浏览: 290393 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

异常的其他概念

 
阅读更多

本章目标
掌握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,肯定是错误的
  }
}

 

 

 

 

  • 大小: 25.3 KB
  • 大小: 97.2 KB
分享到:
评论

相关推荐

    【Java】异常类体系及异常处理

    文章目录1. 异常概念2. 异常分类体系3. 异常的抛出方式:throw & throws & 默认4....另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。 2. 异常分类体系 Thr

    Linux系统系统内核分析系列_2 Linux的中断和异常处理

    中断向量的概念就是由此引出的,其实它就是一个被送通往CPU数据线的一个整数。CPU给每个IRQ分配了一个类型号。 中断有很多类,可能是外部硬件触发,也可能是由软件触发,对于CPU来说,中断处理的过程都是一样的:...

    Python-异常处理-教学设计.docx

    已学习Python语句的顺序结构和条件分支结构和循环结构,一般程序都可编写,可以学习异常处理这个概念,来对程序编写过程中遇到的问题进行处理,并提高编程技能。 不足之处是对前面所学的知识掌握不够扎实。下图是对...

    论文研究 - p27Kip1的表达,主要是在异常的p27Kip1 mRNA的水平上调节,这是一个简短的概念提议。

    对于这个简短的概念提案,阿尔伯特·爱因斯坦博士的“可视化思想实验(德语:Gedanken实验)”被用作了解抗癌剂或促癌剂如何带来5'-非翻译区一级结构的基本工具。 p27Kip1 mRNA变成两个备选二级结构

    ASP.NET数据库项目案例导航chap11

    __________________________________ 特别声明: 本光盘中的源程序以及资源文件仅可作为学习和参考之用,未经许可不得用于任何商业等其它用途。 <br>________________________________________________...

    迈瑞获奖专利为“消除彩色血流图像中速度异常点的方法

    “消除彩色血流图像中速度异常点的方法”发明专利是一个全新的概念,首次提出了基于符号位空时优化血流速度图像的方法,可以最大程度消除彩色血流图像中的速度异常点,提高血流方向检测的准确性和可靠性。...

    微服务系列第十季-Java中的修饰符、包管理及异常处理

    第十季主要是给大家介绍一下:包的作用及使用、Java访问控制修饰符、Java非访问控制修饰符、Java中异常的概念、Exception类的层次、Java内置异常类、捕获异常、多重捕获块‘、throws关键字、finally关键字。

    操作系统大纲 ● 操作系统概述 ● 操作系统的基本概念 ● 定义

    ● 操作系统的基本概念 ● 定义 ● 是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。 ● ...

    fast_io是基于C ++ 20概念的C ++通用异常安全RAII I / O库-C/C++开发

    fast_io是基于C ++ 20概念的C ++通用异常安全RAII I / O库。 它至少比cstdio或iostream快十倍。 fast_io fast_io是一个新的C ++ 20库,用于极快的输入/输出,旨在取代iostream和cstdio。 它仅是标头(以后仅提供模块...

    qlad:TLD解析器查询日志的概念验证异常检测系统

    生活质量QLAD是查询日志分析和检测平台的名称,旨在... 有关其他背景信息,演示文稿和屏幕截图,请参阅文档/文件夹。 架构概述:各种笔记录取带有pcap文件的S3存储桶:存储桶与名称服务器具有相同的名称,例如s3://m

    Java测试新技术TestNG和高级概念.part2

    无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...

    基于序贯模式挖掘的宏观网络流量异常检测 (2008年)

    定义了一个新的频繁模式和相对应的异常度概念。对863-917网络安全监测平台提供的全国流量数据进行了实验,得出对应于“橙色八月”的2006年8月上旬流量严重异常的结论。通过与相关的其他传统算法进行对比,如使用绝对...

    读书笔记:《数据库系统概念》.pdf

    数据访问困难(difficulty in accessing data) 1.2.2 数据库检索系统⾯临的挑战 数据库检索系统⾯临的挑战 数据孤⽴ 完整性问题 加⼊新约束时,与原有约束的协调问题 原⼦性问题 并发访问异常 安全性问题 1.3 数据...

    大数据和人工智能的概念.pdf

    ⼤数据和⼈⼯智能的概念 ⼤数据和⼈⼯智能的概念 概述⼤数据和⼈⼯智能领域的⼀些热门趋势。我们将看到世界如何通过数字化⽽改变,从⽽导致消费和⼯业领域的⼤数据现象;了解到数据 量呈指数级增长,从太字节到艾...

    基于Java语言中异常的深入探析.pdf

    java语言是一种易学易用的网络设计语言,它有简单易学、面向对象、动态性、解释执行性、多线程性、安全性和健壮性等特点。在众多的特点中,笔者重点研究java的健壮性。...相当其它语言来说,java语言摒弃了指针的概念...

    C++进阶课程讲义_v1.0.4.pdf

    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常用的...

    java线程池概念.txt

    前面的判断过程中并没有加锁,因此可能在execute方法判断的时候poolSize小于corePoolSize,而判断完之后,在其他线程中又向线程池提交了任务,就可能导致poolSize不小于corePoolSize了,所以需要在这个地方继续判断 ...

    JAVA经典基础面试题及答案.docx

    异常是程序在运行时出现的错误或异常情况。JAVA中的异常可以通过try-catch块来捕获和处理。 什么是泛型? 泛型是JAVA 5引入的一个新特性,它允许在定义类、接口和方法时使用类型参数。这样可以使代码更加通用和灵活...

Global site tag (gtag.js) - Google Analytics