`

115自定义异常

阅读更多
/*
因为项目中会出现特有的问题
而这些问题并未被java所描述并封装对象
所以对于这些特有的问题可以按照java的对问题封装的思想
将特有的问题,进行自定义的异常封装。即自定义异常

当在函数内部出现了throw抛出异常对象,那么就必须给出对应的处理动作。
要么在内部try catch处理。要么在函数上声明让调用者处理。

一般情况下,函数内出现异常,函数上需要声明。

发现打印的结果中只有异常的名称,却没有异常的信息。
因为自定义的异常并未定义信息。
如何定义异常信息呢?
因为父类(Throwable)中已经把异常信息的操作都完成了,
所以子类(自定义异常类)只要在构造时,
将异常信息传递给父类通过super语句。
那么就可以直接通过getMessage方法获取自定义的异常。

自定义异常必须是继承Exception
继承Exception的原因:
异常体系有一个特点:因为异常类和异常对象都被抛出。
他们都具备可抛性,这个可抛性是Throwable这个体系中的独有特点。
只有这个体系中的类和对象才可以被throw和throws操作。

需求:在本程序中,对于除数是-1也视为是错误的是无法进行运算的。
那么就需要对这个问题进行自定义描述
*/
class FuShuException extends Exception{
	private int value;
	FuShuException(String msg,int value){
		super(msg);
		this.value = value;
	}
	public int getValue(){
		return value;
	}
	
}

class Demo{
	int div(int a,int b)throws FuShuException{
		if(b<0)
			throw new FuShuException("出现了负数情况",b);//手动通过throw关键字抛出一个自定义异常
		return a/b;
	}
}

class ExceptionDemo{
	public static void main(String[] args){
		Demo d = new Demo();
		try{
			int x = d.div(4,1);
			System.out.println("x="+x);
		}
		catch(FuShuException e){
			System.out.println(e.toString());
			//System.out.println("除数出现负数了");
			System.out.println("错误的负数是"+e.getValue());
		}
		System.out.println("over")
	}
}


throws和throw的区别:
throw使用在函数上,throw使用在函数内
throws后面跟的异常类,可以跟多个,用逗号隔开
throw后跟的是异常对象

Exception中有一个特殊的子类异常RuntimeException运行时异常。
如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。
如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。
之所以不用在函数上声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止,因为运行时,出现了无法继续运算的情况。
希望停止后,对代码进行修正。

自定义异常时,如果该异常的发生,无法再进行运算,
就让自定义异常继承RuntimeException

/*异常在子父类中体现:
1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法
只能抛出父类的异常或该异常的子类

2.如果父类方法抛出多个异常,子类在覆盖该方法时,只能抛出父类的子集。

3.如果父类或者接口的方法中,没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。
如果子类方法发生了异常,就必须进行try处理,绝对不能抛。
*/

class AException extends Exception{
	
}
class BException extends AException{
	
}
calss Fu{
	void show()throws AException{
		
	}
}

class Zi extends Fu{
	void show()throws BException{//不能抛父类没有的异常
		
	}
}
分享到:
评论

相关推荐

    115个Java面试题和答案.zip

    5. **异常处理**:理解异常分类(检查型异常和运行时异常)、异常的捕获和抛出、finally块的作用以及自定义异常的创建,这些都是面试常考内容。 6. **JVM内存模型**:了解Java内存区域(堆、栈、方法区、程序计数器...

    115个Java面试题和答案——终极列表

    - **自定义异常**:可以创建自己的异常类,继承自Exception或其子类。 4. **集合框架** - **List, Set, Queue, Map**:理解这些接口的不同用途和实现类,如ArrayList, LinkedList, HashSet, TreeSet, HashMap, ...

    115个Java面试题和答案——终极(上)(1).rar

    - **自定义异常**:如何创建和抛出自定义异常。 3. **集合框架** - **ArrayList与LinkedList**:两者的实现方式、性能特点以及应用场景。 - **HashSet与HashMap**:无序性、唯一性,以及它们的内部实现原理。 -...

    QuartusII+Qsys+NIOSII+SDRAM+DE2_115样例具体实现

    在本篇文档中,详细阐述了如何在Quartus II开发环境中使用Qsys工具来设计一...以上内容提供了从硬件系统构建到软件开发的完整流程,对于希望在FPGA上实现自定义处理器系统的设计者来说,本篇文档是一个宝贵的参考资料。

    115道java面试题

    面试中可能会问到try、catch、finally关键字的用法以及自定义异常的创建。理解异常处理机制可以帮助编写更健壮的代码。 Java EE部分:Java EE涉及Java在企业级应用开发中的应用,包括了异常处理、Java小应用程序...

    115个Java面试题和答案——终极(下)(1).rar

    - **自定义异常**:如何创建并抛出自定义异常。 4. **集合框架** - **List、Set、Queue和Map接口**:理解各自的特点和适用场景,如ArrayList、LinkedList、HashSet、HashMap等。 - **泛型**:使用泛型可以确保...

    易语言115网盘地址获取模块源码.7z

    4. **JSON解析**:通常,Web服务返回的数据格式为JSON,所以需要使用易语言的JSON库或自定义解析函数来处理返回的结果。 5. **错误处理**:源码中应包含适当的错误处理机制,以应对网络问题、API限制或其他可能出现...

    115个Java面试要点.zip

    2. **异常处理**:Java的异常处理机制是面试中的常见话题,包括try-catch-finally块,throw和throws关键字,以及自定义异常。 3. **集合框架**:List(ArrayList, LinkedList)、Set(HashSet, TreeSet)和Map...

    BAT 115个Java面试题和答案——终极(上)

    3. **异常处理**:Java异常处理机制是面试的常见考点,包括try-catch-finally语句块、自定义异常、异常链等。 4. **集合框架**:Java集合框架包括List、Set、Map接口和它们的实现类。面试中可能会考察ArrayList、...

    115个Java面试题和答案——终极列表(下)-word版本

    理解不同类型的异常,如何自定义异常,以及何时何地抛出异常,都是面试中的常见问题。 4. **集合框架**:Java集合框架包括List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。面试中可能...

    GitHub 上标星 115k+ 的 Java 教程.pdf

    以上概述了《GitHub 上标星 115k+ 的 Java 教程》中涉及的主要知识点,涵盖了从基本的数据类型到高级的面向对象编程和并发编程等内容。这些知识点不仅是学习Java的基础,也是深入理解Java的关键所在。

    115cms综合内容管理系统-PHP

    修复个人中心模型内容显示异常 新增模板可创建自定义字段配置目前支持,附件上传 单选框 选择框 输入框 文本域 密码框 附件 颜色 时间 多选等 新增内容可查看对应的分类 新增模型独立分类 创建字段及删除字段 新增...

    BAT 115个Java面试题和答案——终极(下)

    - 知道如何捕获、抛出和自定义异常。 - 理解checked异常和unchecked异常的区别。 5. **多线程**: - 掌握Thread类和Runnable接口,理解并发编程的基础概念。 - 学习synchronized关键字、volatile变量和锁机制。...

    knapsack管理系统基于python (115).zip

    7. **异常处理**:为了确保程序的健壮性,可能包含了对可能出现的错误和异常的处理机制。 8. **测试**:为了保证代码的质量和功能的正确性,项目可能包含单元测试和集成测试。 9. **文档**:项目可能有README文件...

    PB11.5数据窗口存储为EXCEL(dw2xls_For_pb115)

    5. 可能还需要处理异常和错误,确保数据的完整性和一致性。 这个工具对于PB11.5的用户来说非常实用,它简化了数据导出的过程,并且可以集成到应用程序中,提供用户友好的接口,使他们能够方便地将数据导出到广泛...

    Java语言程序设计 第10版 进阶篇 中文part1(共2部分) Y.Daniel Liang 梁勇

    书中会讲解如何使用`try-catch-finally`语句块,以及如何自定义异常类。 7. **泛型**:泛型是Java SE 5.0引入的新特性,用于提供类型安全的集合。这部分将讲解泛型的基本概念、类型参数、通配符和边界。 8. **注解...

    《Java和Android开发实战详解》第6到10章源代码-by 南邮-陈杨

    10.2 抛出异常与自定义Exception类 196 10.2.1 使用throw关键字 196 10.2.2 在方法抛出异常 197 10.2.3 自定义Exception类 199 10.3 线程的基础知识 200 10.4 创建Java的线程 201 10.4.1 实现Runnable...

    NET设计规范-.NET约定、惯用法与模式.part2

    7.4 自定义异常的设计 188 7.5 异常与性能 190 7.5.1 Tester-Doer模式 190 7.5.2 Try-Parse模式 191 7.6 小结 192 第8章 使用规范 193 8.1 数组 193 8.2 attribute 195 8.3 集合 198 8.3.1 集合...

    dw2xls_For_pb115源码.rar_PowerBuilder_dw2xls_nativeziz

    3. 错误处理:为了确保程序的健壮性,源码中可能包含了错误检测和处理机制,防止因数据问题或操作异常导致的程序崩溃。 使用这个源码,开发者可以轻松集成数据导出功能到自己的PowerBuilder应用中,无需额外购买或...

    Java范例开发大全 (源程序)

     实例53 自定义异常实例一 74  实例54 自定义异常实例二 75  第5章 数组(教学视频:98分钟) 78  5.1 一维数组 78  实例55 一维数组的创建与使用 78  实例56 按相反的顺序输出 79  实例57 奇偶分组 80...

Global site tag (gtag.js) - Google Analytics