[Java异常]异常举例

演示程序中的异常

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);
    }
}


posted @ 2017-12-23 23:44  sam-sun  阅读(96)  评论(0)    收藏  举报