问答详情
源自:1-9 经验总结

throw和throws的区别是啥,各自有什么用处啊?

这是自己写的这个模拟借书软件的代码  希望可以帮到大家

https://img.mukewang.com/5b0bef0000019e7109230612.jpg

提问者:如果我是DJ我是DJ我是DJ我是DJ 2018-05-28 19:59

个回答

  • RaymondSH
    2018-05-30 09:16:03
    已采纳

    throw是抛出一个异常类的对象(是一个实例),throws抛出异常类

    在Java中,把程序的业务实现代码放在try块中定义,所有的异常处理逻辑放在catch块中完成。如果执行try块中的代码出现异常,系统就会自动生成一个异常对象,该异常对象被提交给Java运行时环境,这个过程被称为抛出异常。当Java运行时环境收到异常对象时,会寻找能处理该异常对象的catch块,如果找到合适的catch块,则将该异常对象交给该catch块处理,这个过程称为捕获异常,如果Java运行时环境找不到捕获异常的catch,就会传给该方法的调用者。如,main方法调用A方法,A方法调用B方法,B方法调用C方法。。。。,如果在C方法中发生异常,只要抛出了异常没有被捕获,或者捕获异常处理后又重新抛出了异常,那么异常就会传给该方法的调用者(B方法),B方法又传给A方法,A方法传给main方法,如果main方法依然没有处理该异常,JVM会终止该程序,并打印异常的跟踪栈信息

    如果抛出IndexOutBoundsException异常,你可以打印一句话“数组越界”,也可以打印异常跟踪栈信息,同样,如果抛出NumberFormatException异常,你也可以打印“数字格式异常”,也可以打印异常跟踪栈信息,看你如何处理

  • 如果我是DJ我是DJ我是DJ我是DJ
    2018-06-11 18:07:47

    if (scanner.hasNextInt()) {

    int id = scanner.nextInt();

    if (id>ss.length) {

    System.out.println("您输入的书号有误,请重新输入");

    }else{

    System.out.println("寻找完毕:《"+ss[id-1]+"》的书号是"+id);

    }

    }else{

    boolean b = false;

    String name = scanner.next();

    for(int i = 1;i<=ss.length; i++){

    if (ss[i-1].equals(name)) {

    System.out.println("寻找完毕:《"+ss[i-1]+"》的书号是"+(i));

    b = true;

    break;

    }

    }

    if(!b) {

    System.out.println("找不到这本书,请重新输入书名");

    }

    }


  • 一轮温柔月
    2018-06-07 17:07:36

     问个问题。 你拿name 和数组里面的名字比较时  为什么是 i=1开始.  而且还是SS[i+1]?

  • RaymondSH
    2018-05-28 21:15:44

    throws用于声明方法中可能抛出的异常 

    example:public static void main(String[]  args) throws Exception

    throw用于抛出一个具体的异常类对象,可以单独作为语句使用

    如果throw语句抛出的异常是Checked异常,则该throw语句要么处于try块处理,显式捕获该异常,要么放在一个带throws声明抛出的方法中(将该异常交给该方法的调用者处理)

    如果throw语句抛出的是Runtime异常,则该语句可以不用放在try块中,也不用放在带throws声明抛出的方法中,程序可以使用try。。catch来捕获处理异常,也可以不用理会该异常,把该异常交给该方法的调用者处理

    example: 

    public class ThrowExamp

    {      

            public static void main(String[] args)

            {

                    try

                    {       

                            throwChecked(-3);  

                      }

                     catch(Exception e)

                     {

                             System.out.println(e.getMessage());

                      }

                      throwRuntime(3);

    }

    public static void throwChecked(int a) throws Exception

    {        

                if(a>0)

                {

                        //自行抛出Exception异常,必须处于try块中,或带throws声明的方法中

                        throw new Exeption("a 不合法");

                }

    }

    public static void throwRuntime(int a)

    {    

                if(a>0)

                {

                        //自行抛出Runtime异常,既可以显示捕获该异常,也可以不用理会该异常,交给方法调用者处理

                        throw new RuntimeException("a不合法");

                }