第6章除法运算——异常处理

《第6章除法运算——异常处理》由会员分享,可在线阅读,更多相关《第6章除法运算——异常处理(20页珍藏版)》请在文档大全上搜索。
1、6.1 任务预览 本章实训程序运行结果: 6.2 异常 异常,即意外,英文是Exception。 异常通常是程序运行时出现的问题或错误。 【例6-1】编写没有异常处理的除数为0程序。public class Example1 public static void main(String args) int x, y, z;x = 2;y = 0;z = x / y;System.out.println(整数除以0,得: + z);【例6-2】改进例6-1,编写带异常处理的除数为0程序。public class Example2 public static void main(String ar
2、gs) try int x, y, z; x = 2; y = 0; z = x / y; System.out.println(整数除以0,得: + z); catch (Exception e) System.out.println(发生了异常: + e.getMessage(); 6.3 异常种类与层次结构 异常的种类很多,最顶层的异常类是Exception。 ArithmeticException RuntimeException Exception FileNotFoundException IOException Exception NumberFormatException Il
3、legalArgumentException RuntimeException Exception InputMismatchException NoSuchElementException RuntimeException Exception 注意:系统预定义的异常类都以Exception结尾,要求自定义异常类也以该单词结尾,例如MyException。6.4 异常处理代码块异常处理代码块try-catch-finally (1)带参数的try-catch 格式:try 可能发生异常代码 catch (异常类 参数) 异常处理代码 (2)不同异常作不同处理的try-catchcatch. 格
4、式:try 可能发生异常代码 catch (异常类1 参数1) 异常处理代码1 catch (异常类2 参数2) 异常处理代码2 .catch (异常类n 参数n) 异常处理代码n 【例6-3】编写整数除法运算程序,尝试对不同类型异常作不同处理。 import java.util.*;try Scanner scan = new Scanner(System.in); int x, y, z; System.out.println(请输入被除数:); x = scan.nextInt(); System.out.println(请输入除数:); y = scan.nextInt(); z =
5、x/y; System.out.println(整除结果: + z);catch(InputMismatchException e) System.out.println(输入不匹配异常: + e.getMessage();catch(ArithmeticException e) System.out.println(算术异常: + e.getMessage();catch(Exception e) System.out.println(异常: + e.getMessage(); 异常处理代码块 (3)不处理异常的try-finally 格式:try 可能发生异常代码 finally 最终代码
6、 (4)完整的异常处理块try-catchcatch-finally 格式:try 可能发生异常代码 catch (异常类1 参数1) 异常处理代码1 catch (异常类2 参数2) 异常处理代码2 .catch (异常类n 参数n) 异常处理代码n finally 最终代码 【例6-4】在例6-3的main方法后面,增加finally子块,其余代码不变。 finallySystem.out.println(程序结束。); 6.5 throw语句与throws子句 throw语句语法:throw new 异常类构造方法名(参数列表); 如:throw new Exception(除数为零无意
7、义); 使用throws子句在方法中抛出异常的格式如下: 返回类型 方法名(可选参数表) throws 异常类名 自动或主动引发异常的方法体代码【例6-5】编写double型实数除法运算程序,测试实数相除0除数是否会引发异常。 double x, y, z;x = 23.5;y = 0;z = x/y;System.out.println(正实数除以零结果: + z);x = -52.6;z = x/y;System.out.println(负实数除以零结果: + z);x = 0;y = 0; z = x/y;System.out.println(零除以零结果: + z);【例6-6】编写d