一. Java中实现异常处理的基础知识。
1.把可能会发生错误的代码放进try语句块中。
当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。
catch语句块中的代码用于处理错误。
当异常发生时,程序控制流程由try语句块跳转到catch语句块。
不管是否有异常发生,finally语句块中的语句始终保证被执行。
如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。
2.java在异常处理的时候会尽可能catch更加具体的异常,一般不处理Exception类。
3.自定义类时可以继承Exception类。
二. 多层的异常捕获-1
三. 多层的异常捕获-2
四. finally语句块一定会执行吗?
不会,如果用system.exit()函数退出,就不会执行
五. 课后作业2
1.源代码
1 package after_class; 2 3 import java.util.Scanner; 4 5 class IsNumberException extends Exception 6 { 7 /** 8 * 9 */ 10 private static final long serialVersionUID = 1L; 11 IsNumberException() 12 { 13 super(); 14 } 15 IsNumberException(String msg) 16 { 17 super(msg); 18 } 19 } 20 21 class OutofboudaryException extends Exception 22 { 23 /** 24 * 25 */ 26 private static final long serialVersionUID = 1L; 27 OutofboudaryException() 28 { 29 super(); 30 } 31 OutofboudaryException(String msg) 32 { 33 super(msg); 34 } 35 } 36 37 public class Exam { 38 39 public static void main(String[] args) 40 { 41 Scanner in = new Scanner(System.in); 42 43 System.out.println("请输入学生的成绩:"); 44 String str = in.nextLine(); 45 46 if(str.isEmpty()) 47 { 48 System.out.println("没有输入数值!"); 49 System.exit(1); 50 } 51 52 char contain[] = str.toCharArray(); 53 54 try { 55 for(int i = 0;i<contain.length;i++) 56 { 57 if(contain[i]<'0'||contain[i]>'9') 58 { 59 throw new IsNumberException("输入的值不符合要求"); 60 } 61 } 62 }catch(IsNumberException e) 63 { 64 System.out.println(e.getMessage().toString()); 65 System.exit(1); 66 } 67 68 try { 69 70 if(contain.length>3) 71 { 72 System.out.println("1"); 73 throw new OutofboudaryException("输入的值越界了"); 74 } 75 else if(contain.length==3&&contain[0]=='1'&&contain[1]!='0'&&contain[2]!='0') 76 { 77 System.out.println("2"); 78 throw new OutofboudaryException("输入的值越界了"); 79 } 80 else if(contain.length==3&&contain[0]>'1') 81 { 82 System.out.println("3"); 83 throw new OutofboudaryException("输入的值越界了"); 84 } 85 86 } 87 catch(OutofboudaryException e) { 88 System.out.println(e.getMessage().toString()); 89 System.exit(1); 90 } 91 92 if(contain.length==3) 93 { 94 System.out.println("优"); 95 } 96 else if(contain.length==2) 97 { 98 if(contain[0]=='9') 99 { 100 System.out.println("优"); 101 } 102 else if(contain[0]=='8') 103 { 104 System.out.println("良"); 105 } 106 else if(contain[0]=='7') 107 { 108 System.out.println("中"); 109 } 110 else if(contain[0]=='6') 111 { 112 System.out.println("及格"); 113 } 114 else 115 { 116 System.out.println("不及格"); 117 } 118 } 119 else 120 { 121 System.out.println("不及格"); 122 } 123 124 in.close(); 125 126 } 127 } 128 129
2.运行结果