开发工具:
文件大小: 1021kb
下载次数: 0
上传时间: 2019-09-03
详细说明:Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性过 throws声明抛岀它",也"没有用try- catch语勺捕获它",还是会编译通过。例如,除数
为零时产生的 Ar i thmeticException异常,数组越界时产生的 IndexOut0 fOunds except ion
异常,fail-fai丨机刽产生的¢oη cur rentModificationExcept ion异常等,都属于运行时异
常
、曳然如ava编译器不会检查运行吋异常,但是我们也可以通过 throws进行声明抛出,也
以通过try- catch对它进行捕获欠理。
如果产生运行时异常,则需要通过修改代码来进行避免。例如,若会发生除数为零的情
况,则需要通过代码避免该情况的发生!
常见的运行异常
Cl ass CastExcept ion类型强制转换异常
Object x new Integer(0)
System. out. pr intIn((Str ing)x)
当试图将对象强制转换为不是实例的子类时,抛出异常
2、 Ar ithmeticExcept ion算木异常类
int a=5/0:
个整数“除以零”时,抛出异常
3、Nul| Pointer Except ion空指针异常类
Str ing s= nul I;
int size=s length o
当应用程序试图在需要对象的地方使用nuI时,抛出异常
4、 Str inglndex0ut0 fOunds Except ion索引越界
he I I
0f(
指示索引或者为负,或者超出字符串的大小,抛出异常
5、 Negat iveArray size Except ion数组负下标异常
String[ ss= new String[-1
数组大小为负值异常,当使用负数大小值创建数组时抛出异常
6、 iI lega I Ar gumentExceeption参数异常
杝出的异常表明向方法传递了一个不合法或不正确的参数
7、 Number Format Except ion数字格式异常
当试图将一∧ String转换为指定的数字类型,而该字符串却不满足数字类型要求的格式,
抛出异常
8、 Array index0ut0 fOunds Except ion数组下标越界异常
当使用的数组下标超出数组允许范围时,抛出异常
9、 cl assNotFound Exception找不到类异常
当应用试图根据字符串形式的类名构造类,而在遍历C| assPath之后找不到对应名称的
c|ass文件时,抛出异常
10、 ArrayStoreException数组存储异常
当向数组中存放非数组声明类型对象时,抛出异常
11、 NoSuchMethod Except ion方法未找到异常
12、Fi| leNotFound Except ion文件未找到异常
(02)被检查的异常
定义: Exception类本身,以及 Exception的子类中除了"运行吋异常"之外的其它子类都
属于被检杏异常。
精点:Java编译器会检查它。此类异常,要么通过 throws进行声明拋出,要么通过try- catch
进行捕获处理,否则不能通过编译。例如, Clone№ ot Suppor tedexception就属于被检查异
常。当通过 clone0接口去克降一个对象,而该对象对应的类没有实现Cloη eable接口,就
会抛出 Clone Not Suppor tedException异常。
被裣查异常通常都是可以恢复的
(03)错误
定义: Error类及其子类。
特点:和运行时异常一样,编译器也不会对错误进行检查
当资源不足、约東失败、或是其它程序无法继续运行的条件发生时,就产生错误。程序
本身无法修复这些错误的。例如, Virtua I Mach ineError就属于错误。
代似:
PriceException类
package Exception practice;
public class priceException extends Exception{//自定义价格异常类,并继承异常
pub1 ic PriceEXception( String message){//创建价格异常类有参构造方法
super( message);//调用异常类的有参构造方法
Tomato类
package Exception_ practice;
import java. util. Scanner
pub1icc1 ass tomato{//创建西红柿类
private double price;
public double getpriceoi
return price
/设置西红柿单价,若如果产生价格异常,那么就抛出异常
public void setPrice(double price) throws PriceException i
if (price >7.0)t
throw new PriceException("国家规定西红柿单价不得超过7元!!!");
y else i
this price price
public static void main(String[] args)i
//TODO Auto-generated method stub
Scanner input new Scanner (System. in);
System. out. printin("今天的西红柿单价为(单价格式为308):")
String dayprice input next(;
if (dayprice length()== 4)i
//将 String类型的西红柿单价转换为 double类型
double unitPriceDou= Double. parseDoubLe(dayprice)
Tomato tomato new Tomato();
try{//把有可能产生异常的Java代码放在try中
tomato. netprice( unitPricedou);//调用西红柿单价设置的方法
I catch (Exception e)i
System. out. print1n(e, getMessage();/输出异常信息
I finally i
input. close();//关闭控制台输入对象
else
System, out. print1n("违规操作:"+"输入西红柿单价时小数点必须保留两
位有效数字(如3.00)!");
总结
throws关键字和 throw关键字区別
1、 throws用在方法声明后面,表示抛出异常,由方法的调用者处理,而 thr ow用在方
法体内,用来制造一个异常,由方法体内的语句处理
throws是声明这个方法会抛出这种类型的异常,以便使用它的调用者知道要捕捉这
个异常,而 throw是直接抛出一个异常实例
3、 throws表示出现异常的一种可能性,并不一定会产生这些异常,但如果使用 throw
就一定会产生某种异常
异常使用的原则:
异常处理的主要作用是捕捉并处理栏序在运行时产生的异常。编写代码处理某个方法可能岀
现的异常时,可遵循以下原则:
不要过度使用异常。虽然通过异常可以增强程序的健壮性,但使用过多不必要的异
常处理,可能会影响程序执行的效率
不要使用过于庞大的try- catch块。在一个try块中放置大量的代码。这种写法虽
然看似“简单”,但是由于try块中的代码过于庞大,业务过于复杂,会增加try
块中出现异常的几率。从而增加分析异常产生原因的难度
避免使用 catch( Exception e)。如果所有异常都采用相同的处理方式,将导致无
法对不同异常进行分类处理
4
不要忽略捕捉到的异常,遇到异常一定及时处理
5
如炅父类拋出多个异常,则覆盖方法必须拋出相同的异常或其异常的子类,不能拋
出新异常。
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.