异常02(用try--catch解决和异常结构图)

 

package com.shun.yuxibiji;
import java.util.Scanner;
/**
* try-catch捕获异常
* 原理:把可能出现的异常放在try代码块中,然后将异常封装为对象,被catch后面的那个()中的
* 那个异常对象接收,接收之后,执行catch后{}中的代码,之后继续执行后面的代码,后面代码不受影响
* 1.try中没有异常,那么就不会执行catch中的代码
* 2.try中有异常,catch捕获:
*  如果异常和你出现的的异常不匹配,那么也不会执行catch中的代码--》捕获失败,相当于异常还会出现,代码停止运行
*  如果异常和你出现的的异常匹配,那么执行catch中的代码--》捕获成功,代码继续执行
*  注意:
*  如果try出项异常,catch捕获异常成功,那么try后面的代码不会执行,
*  但是try-catch后面的代码会继续执行,没有影响
*
*
*/
public class Try_Catch {
    public static void main(String[] args) {
       try {
           Scanner sc = new Scanner(System.in);
           System.out.println("请输入第一个整数:");
           int num = sc.nextInt();
           System.out.println("请输入第二个整数:");
           int num1 = sc.nextInt();
           System.out.println("商是:" + num / num1);
       }catch(Exception ex){
           /**
            * 如果异常捕获成功,try-catch的处理方式
            */
           //第一种方式:什么都不做
           //第二种方式:自定义提示
           System.out.println("你的程序出现异常!");
           //第三种处理方式:
           /*
           * (1)调用toString方法(toString可以省略不写)
           *  System.out.println(ex.toString());
           * (2)显示异常信息的字符串
           * System.out.println(ex.getMessage());
           * (3)显示异常的堆栈信息:就是把异常捕获后通过控制台将异常原效果展示出来
           *    ex.printStackTrace();
           * (4)抛出异常:
           *  throw ex;
           * */
       }finally {
           System.out.println("感谢使用本检验");
       }
/**
*【1】什么情况下,try-catch后面的代码不执行
* 1.throw抛出异常时
* 2.异常非正常捕获时
* 3.在try中遇到return时
* 【2】如果非要执行try-catch后面的代码,就把代码放在finally中,
* 这样无论如何,代码都会执行
* 【3】先执行finally后执行return
* 【4】有一句代码很牛,他可以让finally不执行
*System.exit(1);终止当前JVM虚拟机的执行
*/
    }
}
package com.shun.yuxibiji;
import java.util.InputMismatchException;
import java.util.Scanner;
 /**
* 多重catch
*1.执行顺序,自上而下执行
* 2.如果第一个catch捕获到异常,那么下面的catch将不再执行
* 3.安排catch时,一般将特殊的异常放在前面,总异常放在后面作为最后防线(也就是子类异常在前,父类异常在后)
*4.也可以用或 “|”来连接进行使用,比如catch(ArithmeticException | InputMismatchException r)
*/
public class Two_Catch {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        try {
    int num = sc.nextInt();
    System.out.println("请输入第二个整数:");
    int num1 = sc.nextInt();
    System.out.println("商是:" + num / num1);
        }catch(ArithmeticException a){
            System.out.println("算数异常,除数不能为0");
        }catch(InputMismatchException I){
            System.out.println("输入异常,输入的不是int数据");
        }catch(Exception ex){
            System.out.println("程序异常!");
        }
        System.out.println("感谢您的使用!");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值