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("感谢您的使用!");
}
}