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或者其子类的实例对象

有两种处理方法

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

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

												

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

  1. java中的抛出异常throws与throw

    throws与throw throws是方法可能抛出异常的声明.(用在声明方法时,表示该方法可能要抛出异常)语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{.. ...

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

    一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进.         throw:(针对对象的做法) ...

  3. JAVA中的throws和throw的区别

    Java     一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进.         throw:( ...

  4. Java中throws和throw的区别讲解

    当然,你需要明白异常在Java中式以一个对象来看待.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示, ...

  5. java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类

    package cn.kecheng; import java.util.Scanner; /**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中 ...

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

      异常   异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象. 其实就是Java对不正常情况进行描述 ...

  7. throws与throw

    throws与throw 1)throws出现在方法函数头:而throw出现在函数体:    2)throws表示出现异常的一种可能性,并不一定会发生这些异常:throw则是抛出了异常,执行throw ...

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

    7.2 throws 与 throw关键字 7.2.1 throws 关键字 在定义一个方法时可以使用throws关键字声明,使用throws声明的方法标识此方法不处理异常,而交给方法的调用处进行处理 ...

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

    异常处理, 异常的产生  运行时异常:程序运行中产生的异常:RuntimeException类.   编译时异常:程序在编译时产生的异常:除了RuntimeException类  其他都是编译时产生的 ...

随机推荐

  1. 异步模式模式Future(结合Callable可以获取线程返回结果)

    submit 和 excute是有啥区别 如果有这样的需求: 多线程实现下载,提高效率. 不论是Thread类还是Runnable接口重写run方法,有个特点就是没有返回值~~~~~~ 我都主线程 如 ...

  2. AC自动机-题目集合

    AC自动机-题目集合 模板 如果你想要学习AC自动机,推荐一些学习资料. 学习可以看这篇博客 http://blog.csdn.net/niushuai666/article/details/7002 ...

  3. Android终端管理器删除文件夹

    终端管理器删除文件夹不能用网上提供的: rm -rf 文件夹名 而要用: rm -r 文件夹名. http://blog.csdn.net/enhancing/article/details/8490 ...

  4. Linux终端程序用c语言实现改变输出的字的颜色

    颜色代码: 格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo "\033[41;36m something here \033 ...

  5. UNP总结 Chapter 12~14 IPv4与IPv6的互操作性、守护进程和inet超级服务器、高级I/O函数

    一.IPv4与IPv6的互操作性 1.IPv4客户与IPv6服务器 拥有双重协议栈的主机的一个基本特性就是:其上运行的IPv6服务器既能应付IPv4客户,又能应付IPv6客户.这是通过使用IPv4映射 ...

  6. 蓝桥杯 2014本科C++ B组 六角填数 枚举排列

    标题:六角填数 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填 ...

  7. shell json简单处理

  8. JS正则表达式(一)

    正则表达常用符号 /..../  开始结束 ^ 开始 $ 结束 /s 任何非空字符  /S 非空 /d  匹配一个数字=[0-9] /D  匹配一个非数字=[^0-9] /w   匹配一个数字,下划线 ...

  9. httpclient:Ip 代理

    参考:http://blog.csdn.net/sdfiiiiii/article/details/70432060  http://blog.csdn.net/qy20115549/article/ ...

  10. 20个Flutter实例视频教程-第05节: 酷炫的路由动画-1

    视屏地址: https://www.bilibili.com/video/av39709290/?p=5 博客地址: https://jspang.com/post/flutterDemo.html# ...