文档章节

在方法中抛出异常

wf王帆
 wf王帆
发布于 2016/05/12 10:41
字数 532
阅读 274
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

 若某个方法可能会发生异常,但不想在当前方法中处理这个异常,则可以使用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语句的顺序不可替换。

上一篇: Java中的异常处理
下一篇: Java继承
wf王帆
粉丝 6
博文 64
码字总数 9386
作品 0
西安
私信 提问
加载中
请先登录后再评论。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.4K
6
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.3K
16
浏览器中的scheme解释器--SchemeScript

一个用javascript实现的scheme解释器,可以运行在浏览器中或node.js中。 刚刚看到编译原理与实践第二章,一时兴起,想写个以前就想写的scheme的解释器。昨天晚上开始写,到刚才为止,接近一天...

zoowii
2012/11/01
1.1K
0
使用IBPP在C++中操作FireBird/Interbase数据库

FireBird是一种小巧的关系型数据库,它有多种版本,包括服务器版(象MySQL),单机版(象Access)以及嵌入式(象SQLite)。而且不管是服务器版还是嵌入式版它都完整支持视图、触发器、存储过程等...

Waiting4you
2009/07/26
3.8K
2
在C++中使用Lua

http://www.cppprog.com/2009/0209/62.html

Waiting4you
2009/05/05
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Java中使用OpenSSL生成的RSA公私钥进行数据加解密

当前使用的是Linux系统,已经按装使用OpenSSL软件包, 一、使用OpenSSL来生成私钥和公钥 1、执行命令openssl version -a 验证机器上已经安装openssl openssl version -a 运行结果: 2、生成...

osc_1psr53ow
6分钟前
0
0
计算机毕业设计之springboot+vue.js点餐小程序 点餐系统

功能 后台: 1. 超级管理员(具有该系统所有权限)登录 查看系统所有管理员 操作:可新添加管理员并分配系统已有角色; 可对已有管理员进行信息编辑; 可对除超管外的其他管理员账号禁用/启用...

osc_x4ot1joy
7分钟前
0
0
MATLAB数学建模

链接:https://pan.baidu.com/s/1WA2ltwyMZuKeo7OC9XAIvw 提取码:tmy2 记录matlab参加建模比赛时所用的书籍,避免忘记 链接:https://pan.baidu.com/s/1WA2ltwyMZuKeo7OC9XAIvw 提取码:tmy...

osc_oa6qrgun
8分钟前
0
0
Python中可以使用静态类变量吗? - Are static class variables possible in Python?

问题: Is it possible to have static class variables or methods in Python? Python中是否可以有静态类变量或方法? What syntax is required to do this? 为此需要什么语法? 解决方案:...

技术盛宴
39分钟前
17
0
如何在Android中以像素为单位获取屏幕尺寸 - How to get screen dimensions as pixels in Android

问题: I created some custom elements, and I want to programmatically place them to the upper right corner ( n pixels from the top edge and m pixels from the right edge). 我创建......

javail
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部