JAVA的throw⽤法及扩展try catch的使用方法
程序运⾏过程中可能会出现异常情况,⽐如被0除、对负数计算平⽅根等,还有可能会出现致命的错误,⽐如内存不⾜,磁盘损坏⽆法读取⽂件等,对于异常和错误情况的处理,统称为异常处理。
Java异常处理主要通过5个关键字控制:try、catch、throw、throws和finally。try的意思是试试它所包含的代码段中是否会发⽣异常;⽽catch当有异常时抓住它,并进⾏相应的处理,使程序不受异常的影响⽽继续执⾏下去;throw是在程序中明确引发异常;throws的作⽤是如果⼀个⽅法可以引发异常,⽽它本⾝并不对该异常处理,那么它必须将这个异常抛给调⽤它的⽅法;finally是⽆论发不发⽣异常都要被执⾏的代码
关键字:throw,throws,try和catch的⽤法如下:
1、throws出现在⽅法的声明中,表⽰该⽅法可能会抛出的异常,允许throws后⾯跟着多个异常类型
2、throw出现在⽅法体中,⽤于抛出异常。当⽅法在执⾏过程中遇到异常情况时,将异常信息封装为异常对象,然后throw。
3、try出现在⽅法体中,它⾃⾝是⼀个代码块,表⽰尝试执⾏代码块的语句。如果在执⾏过程中有某条语句抛出异常,那么代码块后⾯的语句将不被执⾏。
4、catch出现在try代码块的后⾯,⾃⾝也是⼀个代码块,⽤于捕获异常try代码块中可能抛出的异常。catch关键字后⾯紧接着它能捕获的异常类型,所有异常类型的⼦类异常也能被捕获。
演⽰实例
package  ption;
/** */ /**
* 抛出异常和声明异常
* @author joe
*
*/
public  class  ThrowAndThrows  ... {
/** *//**
* 计算⼀个数字的平⽅根
* @param nStr    以字符串的形式提供数字
* @return    返回平⽅根
* @throws Exception    当⽤户输⼊的字符串为空,
* 或者字符串⽆法转换成数字,或者转换成的数字⼩于0,都会抛出异常
*/
public static double sqrt(String nStr) throws Exception ...{
if (nStr == null) ...{
//⽤trow关键字抛出异常,当异常被抛出时,程序会跳出该⽅法
throw new Exception("输⼊的字符不能为空!");
}
double n = 0;
try ...{
n = Double.parseDouble(nStr);
} catch(NumberFormatException e) ...{
//将parseDouble⽅法可能抛出的异常NumberFormatException捕获,
//然后将捕获的异常重新封装并输出
throw new Exception("输⼊的字符串必须能够转化成数字!", e);
}
if (n < 0 )...{
throw new Exception("输⼊的字符串转化成的数字必须⼤于0!");
}
return Math.sqrt(n);
}
public static void main(String[] args) throws Exception ...{
<{
ThrowAndThrows.sqrt("-124.56");
} catch(Exception e) ...{
//将sqrt⽅法声明的可能抛出的Exception异常捕获
//打印捕获的异常的堆栈信息,从堆栈信息中可以发现异常发⽣的位置和原因
System.out.println("Got a Exception:" + e.getMessage());
e.printStackTrace();
throw e;    //不做进⼀步处理,将异常向外抛出
}
//将sqrt声明了可能会抛出的异常向外抛出,必须在⽅法声明中使⽤throws
ThrowAndThrows.sqrt("-124.56");
}
}
程序输出结果:
Got a Exception:输⼊的字符串转化成的数字必须⼤于0!
java.lang.Exception: 输⼊的字符串转化成的数字必须⼤于0!
ption.ThrowAndThrows.sqrt(ThrowAndThrows.java: 30 )
ption.ThrowAndThrows.main(ThrowAndThrows.java: 37 )
Exception in thread  " main "  java.lang.Exception: 输⼊的字符串转化成的数字必须⼤于0!
ption.ThrowAndThrows.sqrt(ThrowAndThrows.java: 30 )
ption.ThrowAndThrows.main(ThrowAndThrows.java: 37 )
源码分析:
在main⽅法⾥,由于sqrt⽅法的声明中有throws关键字,所以,在调⽤该⽅法时,必须对throws后⾯声明的异常进⾏处置,处置的⽅法有两种:
(1)main⽅法处理该异常,使⽤atch语句,将可能会出现的异常的代码放在try块内,将处理异常的代码放在catch块内,并指明catch能够捕获的异常的类型,当异常被捕获时,执⾏catch块内的语句。
(2)main⽅法不处理该异常,将异常向外层程序抛出。在⽅法声明中使⽤throws关键字抛出异常,⽅法体中不需要使⽤atch语句。
异常类Exception的getMessage⽅法⽤来获取⼀场的描述信息,printStackTrace⽅法⽤来打印异常的堆栈信息,通过堆栈信息能够查明异常发⽣的原因和位置,在调试的时候常⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。