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

J2SE_手动抛出自定义异常

    博客分类:
  • Java
阅读更多

1.手动抛出异常

手动抛出异常要用到throwthrows语句。

 

throw语句:

用于显式地引发异常,执行流程将在throw语句后立即停止,因此不会执行下一个语句。

抛出异常后,系统会检查最近层的try块,看他是否有一个catch子句与Throwabel实例的类型相匹配。

如果找到匹配,控制权则转到该语句。如果未找到匹配则检查下一层try语句,此循环将继续直到执行完最外层的异常处理程序。

 

throws语句:

用于处理一个方法可能引发的多个异常,throws必须提供异常列表及方法定义。

假设x()方法调用另一个方法y(),如果方法y()引发异常且该异常未得到处理,则调用法方法x()时必须遵从以下规则:

<1>声明x()方法,同时拥有try/catch语句块来捕获已抛出的异常

<2>如果x()方法没有try/catch块,则异常将传递给它自己的调用者,即调用x()方法的方法。要避免这种情况最好在x()方法中包含至少一个try/catch

 

2.手动抛出自定义异常

ExceptionError类提供的内置异常不一定总能捕获程序中发生的所有错误。有时则需要创建用户自定义异常,这些异常都是Exception类的子类。

Exception类未定义自己的任何方法,但从Throwable类继承了其所有的方法。创建的任何用户自定义异常类都将具有该类的方法。

 

示例代码:

 

package mypackage;

import java.util.Scanner;
/**
 * 手动抛出自定义异常示例
 * @author 眼镜哥哥
 */
public class ExceptionDemo {
	
	public ExceptionDemo(){}
	public static void main(String[] args) {
		new ExceptionDemo().demo();
	}
	public void demo(){
		Scanner s = new Scanner(System.in);
		System.out.print("请输入数组的长度:");
		String str = s.next();
		ExceptionClass ec = new ExceptionClass(str);
		s.close();
	}
}
class ExceptionClass{
	
	protected ExceptionClass(String size){
		try {
			this.checkSize(size);
		} catch (IllegalNumberException e) {
			System.out.println(e);
			new ExceptionDemo().demo();
		} catch (ArraySizeException e){
			System.out.println(e);
			new ExceptionDemo().demo();
		}
	}
	
	public void checkSize(String size) throws IllegalNumberException,ArraySizeException {
		if(size.matches("\\D")){
			throw new IllegalNumberException();
		}
		int num = Integer.parseInt(size);
		if(num<0){
			throw new ArraySizeException();
		}
		int[] array = new int[num];
		for (int i = 0; i < num; i++) {
			array[i] = i+1;
			System.out.println(array[i]);
		}
	}
}
class IllegalNumberException extends NumberFormatException{
	
	private static final long serialVersionUID = 1L;
	public IllegalNumberException() {
		super("输入的不是数字!");
	}
}
class ArraySizeException extends NegativeArraySizeException{
	
	private static final long serialVersionUID = 1L;
	public ArraySizeException() {
		super("传递了非法的数组长度!");
	}
}

 

 

演示结果图: 

 

  • 大小: 7.6 KB
分享到:
评论

相关推荐

    J2SE_API J2SE_API

    J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API

    J2SE_5.0_第04章_异常处理2.rar

    4. **异常的抛出**:使用`throw`关键字可以显式抛出异常,或者当遇到无法处理的情况时,Java会自动隐式抛出异常。 5. **异常的捕获**:使用`try-catch`块可以捕获并处理异常。`try`块包含可能抛出异常的代码,`...

    J2SE_5.0_第04章_异常处理1.rar

    `throw` 用于显式抛出异常,而 `throws` 用于方法声明,表明该方法可能会抛出异常,将异常处理的责任交给调用者。 `03_异常的分类.avi` 可能详细介绍了Java中的异常分类。Java的异常体系基于继承自 `java.lang....

    J2SE_5.0_第06章_常用类2.rar

    J2SE_5.0_第06章_常用类2.rar

    J2SE_J2EE帮助文档

    "J2SE_J2EE_Api.chm"文件很可能是一个包含J2SE和J2EE API的综合指南,其中涵盖了各种类、接口和方法的解释,是学习和开发Java应用的重要参考资料。 总的来说,掌握J2SE和J2EE的知识对于Java开发者来说至关重要,...

    J2SE6.0_Api_CN.zip_J2SE6.0_Api_CN_J2se6.0_apidoc_j2se 6.0_APIDOC

    J2SE 6.0的API中文文档详细列出了所有这些特性的使用方法和示例代码,帮助开发者快速掌握并利用这些功能来构建健壮的Java应用。对于学习和查阅Java 6的API,这个文档是不可或缺的资源。通过`J2SE6.0_Api_CN`这个文件...

    j2se.rar_j2EE api_j2se_j2se.c

    这个压缩包"j2se.rar_j2EE api_j2se_j2se.c"显然包含了与 J2EE 和 Java Standard Edition (J2SE) 相关的资源,尤其是 J2EE 的API文档以及可能的 J2SE 相关代码示例。 J2SE 是 Java 平台的核心部分,它为桌面应用和...

    J2SE_API_chs

    "J2SE_API_chs" 是 J2SE API 的中文版文档,对于中文用户来说,学习和查阅 Java 相关知识点变得更加方便。 1. **基础类库**:J2SE API 包括了许多基础类库,如集合框架(java.util 包)、I/O 流(java.io 包)、多...

    J2SE_of_ezPuzzle_ACG同人拼图小游戏.7z

    J2SE_of_ezPuzzle ACG同人拼图小游戏 ============================================= 无聊练习编程时制作的小程序,估计感兴趣的人不多! 不过工作之余放松一下也是很值得的! 【注意】运行此程序需要系统...

    J2SE_5.0 API

    一份我觉得不错的中文J2SE API文档,拿来给大家一起分享

    JDK中文文档 J2SE_API中文文档(1)

    JDK中文文档 J2SE_API中文文档由于比较大,压缩成两个文件上传

    JDK中文文档 J2SE_API中文文档(2)

    JDK中文文档 J2SE_API中文文档(2)第二部分(共两部分)

    liyingfang.rar_JDBC SQL SERVER_j2se_j2se sql_java jdbc_销售系统

    该系统采用C/S(客户端/服务器)架构,利用Java J2SE技术,通过JDBC(Java Database Connectivity)实现与SQL SERVER数据库的连接,从而将供应商、仓库、门店及客户这四大核心元素有机融合,构建出一个高效、实用的...

    j2se_中文版

    在Java编程中,J2SE是基础,它包含了核心类库,如集合框架、I/O流、网络编程、多线程、GUI(图形用户界面)组件、异常处理、反射机制等。这些API为开发者提供了构建复杂应用程序所需的各种工具和功能。 1. 集合框架...

    JDK_API_J2SE_6_中文版

    《JDK_API_J2SE_6_中文版》是针对Java 2 Platform Standard Edition (J2SE) 6.0的API文档的中文版本。这个文档对于Java开发者来说至关重要,因为它详细介绍了Java SE 6平台的核心类库和接口,帮助程序员理解和使用...

    java_movestar.rar_j2se_线程控制

    在这个名为"java_movestar.rar_j2se_线程控制"的压缩包中,我们很显然会探讨如何在J2SE环境中使用线程来控制程序的执行,特别是针对一个有趣的实例——在屏幕上画出移动的星星。 线程在计算机科学中是并发执行的...

    (java)J2SE_核心技术基础

    通过《J2SE_核心技术基础》的学习,你将全面掌握Java的基础知识,并能编写出符合标准的Java代码。结合实例代码,理论与实践相结合,将加速你的学习进程,为后续的Java Web和Java EE开发打下坚实基础。

    解析WireShark抓包软件的pcap文件,J2SE_ParsePcap.zip

    解析WireShark抓包软件的pcap文件,J2SE_ParsePcap

    j2se_TankWar_坦克大战练习项目(单机版)

    这个项目“j2se_TankWar_坦克大战练习项目(单机版)”就是基于J2SE环境构建的一个游戏项目,非常适合Java初学者进行实践和学习。J2SE提供了丰富的API,包括核心类库、I/O流、网络编程、多线程、图形用户界面(GUI)...

    J2SE_Java_Api.zip

    Java API,全称为Java Application Programming Interface,是一组预先定义好的类和...这个名为“J2SE_Java_Api.zip”的压缩包,很可能包含了完整的J2SE API文档,供开发者参考学习,以便更好地理解和使用Java API。

Global site tag (gtag.js) - Google Analytics