在方法中抛出异常
2016-05-12 00:00
176 查看
若某个方法可能会发生异常,但不想在当前方法中处理这个异常,则可以使用throws,throw关键字在方法中抛出异常。
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常,多个异常可使用逗号分离。
public class Shoot{
static void pop()throws NegativeArraySizeException{
//定义方法并抛出NegativeArraySizeException异常
int[]arr=new int[-3];
}
public static void main(String[]args){
try{
pop();
}catch(NegativeArraySizeException e){
System.out.println("pop()方法抛出的异常");
}
}
}
使用throws关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终能有处理该异常的代码。
throw关键字通常用于方法体中,并且抛出一个异常对象。程序在执行throw语句时立即终止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获该异常,则需要在抛出的方法中使用throws关键字在方法的声明中指出要抛出的异常,如果要捕获throw抛出的异常,则必须使用try-catch语句块。
public class Captor{
static int quotient(int x,int y)throws myException{
if(y<0){
throw new MyException("除数不能是负数");
}
return x/y;
}
public ststic void main(String args[]){
try{
int result=quotient(3,-1);
}catch(MyException e){
System.out.println(e.getMessage());
}catch(ArithmeticException e){
System.out.println("除数不能为0");
}catch(Exception e){
System.out.println("程序发生了其他的异常");
}
}
}
上面的实例使用了多个catch语句来捕捉异常。如果调用quotient(3,-1)方法,将发生MyException异常,程序调转到catch(MyException e)代码块中执行;如果调用quotient(5,0)方法,会发生ArithmeticException异常,程序调转到catch(ArthmeticException e)代码块中执行;如果还有其他异常发生,将使用catch(Exception e)捕获异常。由于Exception是所有异常类的父类,如果将catcah(Exception e)代码块放在其他两个代码块的前面,后面的代码块将永远得不到执行,也就没有什么意义了,所以catch语句的顺序不可替换。
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常,多个异常可使用逗号分离。
public class Shoot{
static void pop()throws NegativeArraySizeException{
//定义方法并抛出NegativeArraySizeException异常
int[]arr=new int[-3];
}
public static void main(String[]args){
try{
pop();
}catch(NegativeArraySizeException e){
System.out.println("pop()方法抛出的异常");
}
}
}
使用throws关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终能有处理该异常的代码。
throw关键字通常用于方法体中,并且抛出一个异常对象。程序在执行throw语句时立即终止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获该异常,则需要在抛出的方法中使用throws关键字在方法的声明中指出要抛出的异常,如果要捕获throw抛出的异常,则必须使用try-catch语句块。
public class Captor{
static int quotient(int x,int y)throws myException{
if(y<0){
throw new MyException("除数不能是负数");
}
return x/y;
}
public ststic void main(String args[]){
try{
int result=quotient(3,-1);
}catch(MyException e){
System.out.println(e.getMessage());
}catch(ArithmeticException e){
System.out.println("除数不能为0");
}catch(Exception e){
System.out.println("程序发生了其他的异常");
}
}
}
上面的实例使用了多个catch语句来捕捉异常。如果调用quotient(3,-1)方法,将发生MyException异常,程序调转到catch(MyException e)代码块中执行;如果调用quotient(5,0)方法,会发生ArithmeticException异常,程序调转到catch(ArthmeticException e)代码块中执行;如果还有其他异常发生,将使用catch(Exception e)捕获异常。由于Exception是所有异常类的父类,如果将catcah(Exception e)代码块放在其他两个代码块的前面,后面的代码块将永远得不到执行,也就没有什么意义了,所以catch语句的顺序不可替换。
相关文章推荐
- Java中的异常处理
- 怎么用ChemBio 3D检查结构信息
- C++ 构造函数和析构函数
- 在ChemDraw中怎样绘制分子立体结构
- 如何在ChemDraw中输入化学式分隔点
- 关于微商城,必须要搞清楚的三件事!
- IOS开发中的时间、日期问题
- 加速计原理 IOS4.0之前
- 知道如何能够免费用上EDIUS Pro 8
- 百分率+戒烟思维导图模板
- 活动名称+简历思维导图模板
- human+如何让员工幸福思维导图模板
- 薪酬管理+优秀学习者思维导图模板
- NSStream的简单封装
- 兼容html5 video标签视频播放,html5media.min.js
- Spring (依赖注入)
- nginx相同域名不用tomcat端口
- Spring+SpringMVC+MyBatis+Maven框架整合
- Gradle DSL method not found: 'android()
- Okhttp post请求