抛出异常-throws和throw

package com.mpp.test;

import java.util.Scanner;

public class TryDemoFour {
    public static void main(String[] args) {
        try {
            testAge();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * throw抛出异常对象的处理方案
     * 1. 通过try.catch包含throw的语句--自己抛出自己处理
     * 2. 通过throws在方法声明处抛出异常类型--谁用谁处理--调用者可以自己处理,也可以继续向上抛
     * 3. 此时可以抛出与throw相同类型或者其父类
     */
    //描述酒店的入住规则:限定年龄,18岁以下,80岁以上的住客必须由亲友陪同

    /*
    public static void testAge() {
        try {
            System.out.println("请输入年龄:");
            Scanner input = new Scanner(System.in);
            int age = input.nextInt();
            if (age < 18 || age > 80) {
                throw new Exception("18岁以下,80岁以上的住客必须由亲友陪同");
            } else {
                System.out.println("欢迎入住本酒店");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
*/

    public static void testAge() throws Exception {
            System.out.println("请输入年龄:");
            Scanner input = new Scanner(System.in);
            int age = input.nextInt();
            if (age < 18 || age > 80) {
                throw new Exception("18岁以下,80岁以上的住客必须由亲友陪同");
            } else {
                System.out.println("欢迎入住本酒店");
            }
    }
}
throws:如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来抛出异常类型。throws 后面可以跟多个异常类型,用逗号分隔

当方法OAO出异常时,方法不对异常做处理,而是调用该方法处做异常处理

package com.mpp.test;

import java.util.InputMismatchException;
import java.util.Scanner;

public class TryDemoThree {
    public static void main(String[] args) {
        /*
        try {
            int res = test();
            System.out.println("one和two的商是:" + res);
        }
        catch (ArithmeticException e){
            System.out.println("除数不允许为零");
            e.printStackTrace();
        }
        catch (InputMismatchException e){
            System.out.println("不支持非数字");
            e.printStackTrace();
        }
        */

        try{
            int res = test();
            System.out.println("one和two的商是:" + res);
        }
        catch (ArithmeticException e){

        }
        catch (InputMismatchException e){

        }
        catch (Exception e){

        }
//        test();  //只抛出父类Exception时这里报错
    }

    /*
    通过throws抛出异常时,针对可能出现的多种情况,解决方案:
    1. throws后面接多个异常类型,中间用逗号分隔
     */

    /*throws抛出异常,谁调用这个方法谁处理异常
    public static int test() throws ArithmeticException,InputMismatchException {
        Scanner input = new Scanner(System.in);
        System.out.println("=========运算开始=======");
            System.out.print("请输入第一个整数:");
            int one = input.nextInt();
            System.out.print("请输入第二个整数:");
            int two = input.nextInt();
            System.out.println("=========运算结束=======");
            return one / two;
       }
       */

    public static int test() throws Exception{
        Scanner input = new Scanner(System.in);
        System.out.println("=========运算开始=======");
        System.out.print("请输入第一个整数:");
        int one = input.nextInt();
        System.out.print("请输入第二个整数:");
        int two = input.nextInt();
        System.out.println("=========运算结束=======");
        return one / two;
    }
}

throw:抛出异常对象,抛出的只能是可抛出类Throwable或者其子类的实例对象

有两种处理方法

一种是抛出异常类型对象,自己的方法进行处理异常

一种是抛出异常,调用该方法处进行异常处理



原文地址:https://www.cnblogs.com/mpp0905/p/10367508.html

时间: 2024-10-13 03:29:19

抛出异常-throws和throw的相关文章

抛出异常throws与throw

throws throw throws与throw的区别 throw用于在程序中抛出异常,throws用于在声明在该方法中抛出异常. 使用位置不同:throw位于方法体内部,可以作为单独语句:throws必须跟在方法参数列表的后面,不能单独使用. 内容不同:throw抛出一个异常对象,而且只能是一个:throws后面跟异常类,而且可跟多个异常类.

throws和throw抛出异常的使用规则

一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进. throw:(针对对象的做法) 抛出一个异常,可以是系统定义的,也可以是自己定义的.下面举两个例子: 抛出Java中的一个系统异常: public class One { public void yichang(){ NumberFormatException e = new NumberFormatException(); throw e; }

JAVA中的throws和throw的区别

Java 一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进. throw:(针对对象的做法) 抛出一个异常,可以是系统定义的,也可以是自己定义的.下面举两个例子: 抛出Java中的一个系统异常: public class One { public void yichang(){ NumberFormatException e = new NumberFormatException(); throw

Java中throws和throw的区别讲解

当然,你需要明白异常在Java中式以一个对象来看待.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行.直接进入正题哈:1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常. 1.1   throw是语句抛出一个异常.语法:throw (异常对象);         throw e; 1.2   throws是方法可能抛出

day08(异常处理,创建异常,finally,throws和throw的区别)

异常处理, 异常的产生  运行时异常:程序运行中产生的异常:RuntimeException类.   编译时异常:程序在编译时产生的异常:除了RuntimeException类  其他都是编译时产生的异常.    处理异常两种方式 抛出异常:把异常抛给调用者区解决   throws 抛出异常 捕获异常:编程者自己处理try....catch...finally... 创建异常, 1.自己创建sun公司的异常类对象 public class ClassException { public stat

跟王老师异常(六):抛出异常:使用throw抛出异常

抛出异常:使用throw抛出异常 主讲人:王少华  QQ群号:483773664 学习目标: 1.掌握使用throw抛出异常 2.总结Java中对异常处理的二种方式 一.使用情境 当程序发生错误时,系统会自动抛出异常,这是我们上节使用的throws声明抛出异常,除此以外,Java也允许程序员自行抛出异常.自行抛出异常,使用throw语句完成. 那么什么时候程序员自行抛出异常呢?一般情况下,程序员自行抛出的异常,是由业务产生的,比如性别输和不是"男"或"女",系统是无

Java中throws与throw的区别

首先异常在Java中是一个对象.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行.1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常. 1.1   throw是语句抛出一个异常.语法:throw (异常对象);         throw e; 1.2   throws是方法可能抛出异常的声明.(用在声明方法时,表示该

Java -- 异常的捕获及处理 -- throws与throw关键字

7.2 throws 与 throw关键字 7.2.1 throws 关键字 在定义一个方法时可以使用throws关键字声明,使用throws声明的方法标识此方法不处理异常,而交给方法的调用处进行处理. 例:使用throws关键字 例:处理异常 提示: 在主方法中也可以使用throws关键字,但主方法为程序的起点,所以此时主方法再向上抛异常,则只能将异常抛给JVM进行处理.主方法为一切的起点,如果在主方法中使用throws,则程序出现问题后肯定交由JVM进行处理,将导致程序中断,不建议在主方法上

-1-6 java 异常简单介绍 java异常 异常体系 Throwable 分类 throws和throw 异常处理 自定义异常

异常 异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象. 其实就是Java对不正常情况进行描述后的对象体现. Throwable |--Error        严重问题,我们不处理. |--Exception |--RuntimeException        运行期异常,我们需要修正代码 |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过 Exception和