Java常见异常和自定义异常

一、常见的异常

Java中提供了一些异常用来描述经常发生的错误,其中,有的需要程序员进行捕获处理或声明抛出,有的是由Java虚拟机自动进行捕获处理的。常见异常类如下表所示:

常见的异常类
异常类说明
ClassCastException类型转换异常
ClassNotFoundException未找到相应类异常
ArithmeticException算术异常
ArrayIndexOutOfBoundsException数组下标越界异常
ArrayStoreException数组中包含不兼容的值抛出的异常
SQLException操作数据库异常类
NullPointerException空指针异常
NoSuchFieldException字段未找到异常
NoSuchMethodException方法未找到抛出的异常
NumberFormatException字符串转换为数字抛出的异常
NegativeArraySizeException数组元素个数为负数抛出的异常
StringIndexOutOfBoundsException字符串索引超出范围抛出的异常
IOException输入输出异常
IllegalAccessException不允许访问其类异常
InstantiationException

当应用程序试图使用Class类中的NewInstance()方法创建一个类的实例,

而指定的类对象无法被实例化,抛出该异常

EOFException文件已结束异常
FileNotFoundException文件未找到异常

 

二、自定义异常

使用Java内置的异常类可以描述在编程时出现的大部分异常情况,除此之外,用户只需继承Exception类即可自定义异常类,在程序中使用自定义异常类,大致分为以下几个步骤:

1、创建自定义异常类

2、在方法中通过throw关键字抛出异常对象

3、如果在当前抛出异常的方法中处理异常,可以使用try-catvh语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作

4、在出现异常方法的调用者中捕获并处理异常

示例如下:

public class MyException extends Exception {	//创建自定义异常,继承Exception
	public MyException(String ErrorMessage) {	//构造方法
		super(ErrorMessage);					//父类构造方法
	}
}

字符串ErrorMessage是要输出的错误信息。若想抛出用户自定义的异常对象,要使用throw关键字。在下列示例中创建了Tran类,该类中创建一个带有int型参数的方法avg(),该方法用来检查参数是否小于0或大于100.如果参数小于0或大于100,则通过throw关键字抛出一个MyException异常对象,并在main()方法中捕捉该异常:

public class Tran {
	//定义方法,抛出异常
	static int avg(int number1,int number2) throws MyException{
		if(number1<0||number2<0) {						//判断方法中参数是否满足指定条件
			throw new MyException("不可以使用负数");		//错误信息
		}
		if(number1>100||number2>100) {					//判断方法中参数是否满足指定条件
			throw new MyException("数值太大了");			//错误信息
		}
		
		return (number1+number2)/2;						//将参数的平均值返回
	}
	public static void main(String args[]) {
		try {											//try代码块处理肯出现异常的代码
			int result = avg(102,89);					//调用avg()方法
			System.out.println(result);					//将avg()方法的返回值输出
		}catch(MyException e) {
			System.out.println(e);						//输出异常信息
		}
	}
}
/*输出结果如下:
test.MyException: 数值太大了
*/

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值