永发信息网

java中的throw到底有什么用?

答案:4  悬赏:20  手机版
解决时间 2021-02-08 10:34
java中的throw到底有什么用?
最佳答案
这两者虽然看起来只有一个s的区别,但是作用完全不一样
1、throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。如下面例子所示:
public class Shoot { 创建类
static void pop() throws NegativeArraySizeException {
//定义方法并抛出NegativeArraySizeException异常
int [] arr = new int[-3];//创建数组
}
public static void main(String[] args) {//主方法
try {
pop(); //调用pop()方法
} catch (NegativeArraySizeException e) {
System.out.println("pop()方法抛出的异常");//输出异常信息
}
}
}

2、throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。举例如下:
class MyException extends Exception { //创建自定义异常类
String message; //定义String类型变量
public MyException(String ErrorMessagr) { //父类方法
message = ErrorMessagr;
}
public String getMessage(){ //覆盖getMessage()方法
return message;
}
}
public class Captor { //创建类
static int quotient(int x,int y) throws MyException{//定义方法抛出异常
if(y < 0){ //判断参数是否小于0
throw new MyException("除数不能是负数");//异常信息
}
return x/y;//返回值
}
public static void main(String args[]){ //主方法
try{ //try语句包含可能发生异常的语句
int result = quotient(3,-1);//调用方法quotient()
}catch (MyException e) { //处理自定义异常
System.out.println(e.getMessage()); //输出异常信息
}
catch (ArithmeticException e) {
//处理ArithmeticException异常
System.out.println("除数不能为0");//输出提示信息
}
catch (Exception e) { //处理其他异常
System.out.println("程序发生了其他的异常");
//输出提示信息
}
}
}
希望能解决您的问题。追问你说的这些没有解决我的问题啊!!我想问的不是throw怎么用,我想知道throw有什么意义,既然jvm都定义好异常了 还需要throw干啥!
全部回答
因为你可以在一个很普通的地方比如一个else if分支里抛异常,也可以在一个该抛异常的地方什么也不做。
没有引发,你觉得你捕捉到的异常是从哪来的追问碰到一个数组越界异常,不throw难道就不提示异常吗?追答会出现异常,但只会有ArrayIndexOutOfBoundsException。如果你写了一个查找算法,在找不到元素的时候抛出异常,只抛出ArrayIndexOutOfBoundsException,谁知道是算法有问题还是设计就是如此,所以要catch然后throw一个不同的异常,表示算法没问题,但是就是没找到元素追问不懂。。这个算法和设计有什么关系?还有就是为什么throw一个不同的异常就能表示算法没问题了?数组越界异常不就是超过数组的容量了啊,难道这么复杂?
直接上代码:
try{
//todo
}catch(Exception e){
//do log or other
throw new Exception(e);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
韩国世韩净水机这个地址在什么地方,我要处理
本案中,有权利向保险公司申请给付保险金的是
怀孕5个月,肚子硬是一大块硬的还是什么感觉
不开通快捷支付 支付宝钱包可以转账到银行卡
怎么样重新上高中
诺手的天赋,回血,雷霆,嗜血,哪个好?
华钥垂钓中心地址在哪,我要去那里办事
我买了3号火车票,再买2号的可以吗
【二年级上册语文书目录】小学二年级语文课本
龙园鱼池地址在什么地方,我要处理点事
2015福建省质检成绩什么时候出来
怎么才能让狗狗睡觉 想运狗狗,只两个多小时
甘肃黄江水库地址在哪,我要去那里办事
广西汇业土地评估事务所有限公司地址在哪,我
请问白酒60度降成58度要加什么
推荐资讯
时尚美容地址好找么,我有些事要过去
桐柏县南阳海尔我想知道这个在什么地方
新百伦领跑是正品吗?
___ the opportunity,every one of us will b
天天酷跑黄金奖池下次更新会不会把黄金券清零
读“我国某区域图”,回答1一2题。【小题1】
丰田霸道中东版2700是行驶证上是七坐还是五坐
的知识产权公司需要具备哪些要求
learn,slowly,Can的反义词?
红安县高桥镇夏家湾村民委员会怎么去啊,有知
感冒输液为什么胳膊会痛是什么药物导致的
白芬子小学地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?