异常

java异常处理

一、什么是异常处理
异常处理是基于面向对象的一种运行太错误处理机制,通过对异常问题的封装,实现对用户的非法操作、参数设置异常,硬件系统异常,网络状态改变异常等运行态中可能出现的异常信息的处理机制。

二、异常处理机制体系结构

   Java将异常处理封装成一个个类,其中类与类之间的继承关系为:

在异常处理机制中,会对异常进行跟踪,当发生异常时,控制台一次显示,异常名称,提示消息(异常原因),产生异常的行号。对于一些可修复的程序,我么你可以选择抛出异常,java会自动的修改异常,让程序能正常运行

三、异常捕获

   异常捕获的语法为try,catch,finally。程序首先执行try中的代码,当满足catch中的异常情况时执行catch中的代码,catch可以有多个,最后执行finally中的代码。

四、使用throws和throw抛出异常

这种方法是将异常抛出给JVM,而使用throw抛出异常是抛出一个对象,throw可以单独使用也可以和try,catch一起使用。

五、自定义异常

   在我们自定义异常时,一定要是Throwable的子类,如果是检查异常就要继承自Exception,如果是运行异常就要继承自RuntimeException。

异常:异常是描述出错信息的对象。

异常的API结构:Throwable是父类,有两个子类Error和Exception。其中Error是错误,是崩溃级别的错误,
可以捕获,但无法处理。Exception是普通错误,可以捕获,可以处理

Error是所有错误 类的父类
Exeption是所有异常类的父类

try{
被保护的代码


}catch(NumberFormatException e){//创建异常变量e,接收try块抛出的异常对象
捕获块
e.printStacktrace();//创建异常变量
}

public static void main(String[] args) {
	try {
		String m= JOptionPane.showInputDialog(null,"请输入一个数");
		int n=Integer.parseInt(m);
		JOptionPane.showMessageDialog(null, n*n);
	}catch(RuntimeException e) {//创建异常变量e,接收try块抛出的异常对象
		e.printStackTrace();//创建异常变量
	}
	System.out.println("=================");
}

如果一个try块有多个catchkuai联用,只会执行第一个和异常匹配的catch块,其余的catch块全部忽略。

异常执行的顺序:
先执行try块的内容,顺序执行,如果在try块中有异常发生,转到catch块执行,同时中止try块中的其他代码。
当try…catch语句结束后,继续执行后面的代码。

finally语块,无论是否有异常发生,都会执行。一般用于流的关闭,数据库关闭等资源清理的操作。
finally语句块必须和try联用。如果在try块或catch块中有return语句,那么跳出方法之前,会执行finally语句。

finally在虚拟机关闭时(System.exit(0))不会执行

异常分为两种类型:
编译期异常(检查异常)是开发者必须处理,否则无法通过编译

运行期异常(非检查异常)是开发者可以处理,也可以不处理,即使不处理也可以通过编译

所有的运行异常都是RuntimeException的子类

ArithmeticException 算术异常,在执行了非法的算法运算时抛出,比如,除零操作
ArraayIndexOutOfBoundsException 数组下标越界异常,在访问数组元素时,使用非法下标进行访问时抛出。
(下标为负数,或下标大于等于数组的长度)

Class ClassCastException 类型转换异常,将一个类型化为另一个类型时,新的类型不匹配,指定对象时抛出
NumberFormatException 空指针异常,当对null值进行属性或者方法调用时抛出,
NumberFormatException 数字格式化异常,将字符串转化数字类型时,该字符串不是合法的数字格式时抛出

throw与throws的区别
throw是语句,表示显示抛出异常对象。throw new Exception();

throws是方法修饰符,表示该方法可能会抛出某种异常。那么,在调用该方法时,需要处理该方法抛出的异常。

重写的限制:子类方法的访问修饰符,要大于或等于父类方法。
子类方法抛出的异常,要小于或等于父类方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值