异常

一、异常概念

异常就是Java在程序运行时发生的错误。

二、异常分类

Throwable

           Error:服务器宕机,数据库崩溃,不是程序员编写代码所产生的错误。

           Exception(异常)

                     RuntimeException:编写代码产生错误,在运行时产生异常,需要我们去改写代码,这是我们需要掌握。

此外异常又分为:

             编译时异常(未雨绸缪):Java程序必须显示处理,否则程序就会发生错误,无法通过编译。例如:一个文件找不到,需要抛出异常,如果没有处理,这样就会发生错误,这样的错误就叫做编译时异常。不处理编译不过。

              运行时异常:编译通过了,但是出错了,无法运行成功,就是程序需要回来修改代码。无需显示处理,也可以和编译时异常一样处理(在可能错误的地方抛出异常)。这种错误叫做运行时异常。

三、异常语句结构

异常语句3种搭配方式

  1. try{}catch(){}......
  2. try{}catch(){}......finally{}
  3. try{}finally{}

try:用来检验异常,就是将可能发生错误的代码放入try{}语句中。

catch(){}:用来捕获异常,对产生异常进行处理,可以说明输出是啥异常等。在处理多个异常时,跟多个catch,那么小的异常放前面,根据多态原理,如果大的放前面,就会将所有子类对象接收,后面的catch就没有意义了。所以一般最后一个是最大的类Exception 例如:catch(Exception e) {},这样,就算出现其它异常,也会根据多态原理捕获异常(当空指针的时候,如果使用了Exception处理异常,其结果就是  Exception e = new NullPointException())。

finally{}:用来释放资源,它控制的语句体一定会被执行(除非是System.exit(0),在执行之前jvm提前退出了),在IO流与数据库操作中经常使用。

四、throw与throws的区别

throw:在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

  • 作用在方法体内,是一个实例对象
  • 只能抛出一个异常对象(throw new Exception("出错了");)
  • 表示抛出异常,由方法体内的语句处理

throws:定义功能方法时,需要把出现的问题暴露出来让调用者处理,那么就通过在方法上标识。

  • 作用在方法声明后面,跟的是异常类名
  • 可以跟多个异常类名,用逗号隔开
  • 表示抛出异常,由该方法的调用者来处理

五、自定义异常

自定义异常就是为了能够通 "异常名字" 更快看出报的是啥错误,有针对的解决方法。自定义异常类必须继承Exception或RuntimeException。

package com.xue.test;
/**
 * 定义1个异常:AgeOutOfBoundsException
 * 定义一个Student
 * 在里面的setAge方法中,年龄如果超过20岁就抛出AgeOutOfBoundsException异常,并提示年龄超出范围
 * Test测试
 * 
 * @author 
 *
 */
public class Test18 {
	public static void main(String[] args) {
		Student stu = new Student();
		try {
			stu.setAge(21);
		} catch (AgeOutOfBoundsException e) {
			e.printStackTrace();
		}
	}
}

class Student {
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) throws AgeOutOfBoundsException {
		if (age < 20) {
			this.age = age;
		} else {
			throw new AgeOutOfBoundsException("年龄超出");
		}
	}
}

class AgeOutOfBoundsException extends Exception {

	public AgeOutOfBoundsException() {
		super();
	}

	public AgeOutOfBoundsException(String message) {
		super(message);
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值