演示程序中的异常
package cn.jbit.exception;
import java.util.Scanner;
/**
* 演示程序中的异常
*/
public class Test1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
System.out.println("感谢使用本程序!");
}
}
传统处理程序中的异常
package cn.jbit.exception;
import java.util.Scanner;
/**
* 传统处理程序中的异常。
*/
public class Test2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = 0;
if (in.hasNextInt()) { // 如果输入的除数是整数
num2 = in.nextInt();
if (0 == num2) { // 如果输入的除数是0
System.err.println("输入的除数是0,程序退出。");
System.exit(1);
}
System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
System.out.println("感谢使用本程序!");
} else { // 如果输入的除数不是整数
System.err.println("输入的除数不是整数,程序退出。");
System.exit(1);
}
}
}
使用try-catch进行异常处理
package cn.jbit.exception;
import java.util.Scanner;
/**
* 使用try-catch进行异常处理
*/
public class Test3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
try {
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
System.out.println("感谢使用本程序!");
} catch (Exception e) {
System.err.println("出现错误:被除数和除数必须是整数,除数不能为零。");
e.printStackTrace();
}
}
}
使用try-catch-finally进行异常处理
package cn.jbit.exception;
import java.util.Scanner;
/**
* 使用try-catch-finally进行异常处理
*/
public class Test4 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
try {
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
} catch (Exception e) {
System.err.println("出现错误:被除数和除数必须是整数,除数不能为零。");
//System.exit(1); // finally语句块不执行的唯一情况
} finally {
System.out.println("感谢使用本程序!");
}
}
}
测试try块和catch块中return语句的执行
package cn.jbit.exception;
import java.util.Scanner;
/**
* 测试try块和catch块中return语句的执行
*/
public class Test5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
try {
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
return; //finally语句块仍旧会执行
} catch (Exception e) {
System.err.println("出现错误:被除数和除数必须是整数,除数不能为零");
return; //finally语句块仍旧会执行
} finally {
System.out.println("感谢使用本程序!");
}
}
}
多重catch块
package cn.jbit.exception;
import java.util.Scanner;
import java.util.InputMismatchException;
/**
* 多重catch块
*/
public class Test6 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
try {
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
} catch (InputMismatchException e) {
System.err.println("被除数和除数必须是整数。");
} catch (ArithmeticException e) {
System.err.println("除数不能为零。");
} catch (Exception e) { //该异常捕捉在前,报错
System.err.println("其他未知异常。");
} finally {
System.out.println("感谢使用本程序!");
}
}
}
使用throws声明异常
package cn.jbit.exception;
import java.util.Scanner;
/**
* 使用throws声明异常
*/
public class Test7 {
/**
* 通过try-catch捕获并处理异常。
* @param args
*/
public static void main(String[] args) {
try {
divide();
} catch (Exception e) {
System.err.println("出现错误:被除数和除数必须是整数,除数不能为零");
e.printStackTrace();
}
}
// /**
// * 通过throws继续声明异常。
// */
// public static void main(String[] args) throws Exception {
// divide();
// }
/**
* 输入被除数和除数,计算商并输出。
* @throws Exception
*/
public static void divide() throws Exception {
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
}
}