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. 安装MySQLdb出现的问题

    枫竹梦的环境是自己编译安装的MySQL,安装目录在/usr/local/mysql. 下载MySQLdb,由于网络上大多数的链接都是指向比较老的sourceforge上,而我们安装最新的1.2.5,h ...

  2. 关于MySQL的information_schema库简单介绍及实际应用

    本文简介 写本文主要是围绕下面几点进行的. 1.information_schema数据库到底是做什么用的? 2.执行alter table 表名 modify column 字段名 类型 这个sql ...

  3. collectd+logstash+influxdb+grafana构建windows服务器应用监控系统

    一.背景介绍 本监控方案支持对Windows Server服务器集群的全面监控,方案提供丰富的图表展示, 以及对异常问题进行邮件的实时报警. 本系统由Collectd(操作系统数据搜集).logsta ...

  4. hdu 1029 Ignatius and the Princess IV(排序)

    题意:求出现次数>=(N+1)/2的数 思路:排序后,输出第(N+1)/2个数 #include<iostream> #include<stdio.h> #include ...

  5. BZOJ1566 【NOI2009】管道取珠

    题面 这是一道DP神题,直到我写下这句题解时也没有想明白…… 首先,这道题要我们求所有(不同输出序列的方案数)的平方和,于是我们当然就想到求所有不同输出序列的方案数……(大雾) .这道题一个巧妙的地方 ...

  6. 通过Chrome浏览器进行android调试/Remote Debugging on Android with Chrome

    The way your web content behaves on mobile can be dramatically different from the desktop experience ...

  7. v-for指令用法二

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  8. liunx环境下安装tomcat

    第一:下载tomcat的安装包

  9. LOJ114 k大异或和

    传送门 (vjudge和hdu也有但是我觉得LOJ好看!而且限制少!) 不过本题描述有误,应该是k小. 首先我们需要对线性基进行改造.需要把每一位改造成为,包含最高位的能异或出来的最小的数. 为啥呢? ...

  10. codevs 2456栅栏

    传送门 2456 栅栏 2006年省队选拔赛四川  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Maste   题目描述 Description 农夫约翰打算建立一个栅 ...