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. php MVC原理

    一直用php的mvc模式,但是一直没深入研究其原理性的东西,今天把最基本的mvc原理模型总结如下: 1.url访问方式  http://127.0.0.1:8080/ceshi.com/index.p ...

  2. Flask内置命令行工具—CLI

    应用发现 flask命令在Flask库安装后可使用,使用前需要正确配置FLASK_APP环境变量以告知用户程序所在位置.不同平台设置方式有所不同. Unix Bash (Linux, Mac, etc ...

  3. WebDriver API——延时操作及元素等待

    在自动化测试过程当中,受网络.测试设备等诸多因素的影响,我们经常需要在自动化测试脚本中添加一些延时来更好的定位元素来进行一系列的操作. 一般有这么几种方式: 1.implicitlyWait.识别对象 ...

  4. html5--3.14 lable元素和label属性

    html5--3.14 lable元素和label属性 学习要点 掌握label元素的使用 掌握label属性的使用 lable元素 用来为 input 元素定义标注(标记),建立一个与之相关联的标签 ...

  5. 内部类访问外部类方法中的参数-使用final

    public synchronized <T extends MetricsSource> T register(final String name, final String desc, ...

  6. C语言system()函数:执行shell命令

    头文件:#include <stdlib.h> 定义函数:int system(const char * string); 函数说明:system()会调用fork()产生子进程, 由子进 ...

  7. CentOS6.3安装 Oracle 11g R2

    1.设置系统1.1.包需求 11g很人性化了,增加了检查的机制,还有就是不象10g那样在64位下要安装很多的32位包,只需要安装一个gcc-32bit-4.3就OK了.下列表必须要安装:binutil ...

  8. <编译>条件编译——判断当前使用的编译器及操作系统

    有时候编译需要多平台运行的代码,需要一些条件编译,经常忘记,这里专门记录一下,方便下次查找.   编译器 GCC #ifdef __GNUC__ #if __GNUC__ >= 3 // GCC ...

  9. 深度学习之softmax回归

    前言            以下内容是个人学习之后的感悟,转载请注明出处~ softmax回归 首先,我们看一下sigmod激活函数,如下图,它经常用于逻辑回归,将一个real value映射到(0, ...

  10. 安装 Sublime Text 3及其插件

    1. 安装 Sublime Text 3 虽然现在的 Sublime 3 还处于 beta 阶段, 但已经非常稳定了, 而且速度比 Sublime 2 得到了增强. Sublime 3 可以到官网下载 ...