文档章节

在方法中抛出异常

wf王帆
 wf王帆
发布于 2016/05/12 10:41
字数 532
阅读 146
收藏 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语句的顺序不可替换。

© 著作权归作者所有

共有 人打赏支持
wf王帆
粉丝 6
博文 64
码字总数 9386
作品 0
西安
异常处理

抛出异常 异常处理使得程序可以处理非预期的情景,并且能够继续正常的操作 在java中,运行时错误会作为异常抛出。异常就是一种对象,表示阻止正常进行程序执行的错误或者情况。 异常是从方法...

承思
2017/10/11
0
0
《Java编程思想》第四版读书笔记 第十二章 通过异常处理错误

12.4 之前程序里写日志不清楚怎么把printStackTrace()输出的内容写到日志里,仅仅是写getMessage()信息少了不少。在本节的例子中给出了一个方法: StringWriter sw = new StringWriter(); Pr...

一万
2016/06/05
131
0
第十一章 异常,日志,断言和调试

第十一章 异常,日志,断言,调试 由于程序的错误或一些外部环境的影响造成用户数据的丢失,用户就有可能不再使用这个程序了。为了避免,应该做到以下几点: 向用户通告错误 保存所有的操作结...

law-luffy
2015/09/10
108
0
java中创建错误总结(面试专用)

有些错误是我自己总结的,有些是在网上找到的,有兴趣总结了一下,希望能帮到你们! 上面是单纯的错误,下面有注解! 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException ...

IT小小怪
07/04
0
0
java 高级编程之深入理解异常处理机制

引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。...

键盘上跳舞
2017/07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

shell特殊符号、cut、sort、uniq、wc、tee、tr、split命令

10月15日任务 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 cut 命令 cut作用:截取字符串 用法如下:cat /etc/passwd |head -2 |cut -d ...

hhpuppy
21分钟前
0
0
Springboot实现filter拦截token验证和跨域

背景 web验证授权合法的一般分为下面几种 1使用session作为验证合法用户访问的验证方式 使用自己实现的token 使用OCA标准 在使用API接口授权验证时,token是自定义的方式实现起来不需要引入其...

funnymin
56分钟前
1
0
linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
14
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部