java 19 -2 异常以及tr...catch()的方法处理异常

  1 /*
  2   异常:程序出现了不正常的情况。
  3
  4   举例:今天天气很好,班长出去旅游。骑着自行车,去山里面呼吸新鲜空气。
  5 Error:
  6         问题1:山路塌陷了,班长及时停住了,但是过不去了。严重的问题。(Error,编译处理不了的)
  7 Exception:
  8         问题2:班长出门推自行车,发现气没了,把气吹起来。出发前就应该检查的问题。(非RuntimeException的异常,必须处理)
  9           问题3:班长骑着车在山路上惬意的行驶着,山路两边是有小石子的,中间是平坦的水泥路。(RuntimeException 需要修正代码)
 10               一直在平坦的水泥路上行驶是没有任何问题的,但是呢,他偏偏喜欢骑到小石子上,结果爆胎了。旅游的过程中出现的问题。
 11               no zuo no die。
 12
 13 程序的异常:Throwable
 14     严重问题:Error   是程序本身无法恢复的严重错误,无法处理
 15     问题:Exception 表示可以被程序捕获并处理的异常错误
 16         编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过。
 17         运行期问题: RuntimeException  这个问题出现肯定是我们的代码不够严谨,需要修正代码的。
 18
 19   如何程序出现了问题,我们没有做任何处理,最终jvm会做出默认的处理。
 20   把异常的名称,原因及出现的问题等信息输出在控制台。
 21   同时会结束程序。
 22
 23 我们自己如何处理异常呢?
 24   A:try...catch...finally
 25   B:throws 抛出
 26
 27   try...catch...finally的处理格式:
 28           try {
 29               可能出现问题的代码;
 30           }catch(异常名 变量) {
 31               针对问题的处理;
 32           }finally {
 33               释放资源;
 34           }
 35
 36   变形格式:
 37           try {
 38               可能出现问题的代码;
 39           }catch(异常名 变量) {
 40               针对问题的处理;
 41           }
 42
 43   注意:
 44           A:try里面的代码越少越好(因为jvm会针对try里面的代码开辟另外的空间,所以越少越好,省空间)
 45           B:catch里面必须有内容,哪怕是给出一个简单的提示(不然就不是处理问题,而是隐藏问题了)
 46
 47     A:一个异常
 48   B:二个异常的处理
 49           a:每一个写一个try...catch
 50     b:写一个try,多个catch
 51               try{
 52                   ...
 53               }catch(异常类名 变量名) {
 54                   ...
 55               }
 56               catch(异常类名 变量名) {
 57                   ...
 58               }
 59               ...
 60
 61         注意事项:
 62                   1:能明确的尽量明确,不要用大的来处理。
 63                   2:平级关系的异常谁前谁后无所谓,如果出现了子父关系,父必须在后面。
 64
 65     注意:
 66           一旦try里面出了问题,就会在这里把问题给抛出去,然后和catch里面的问题进行匹配,
 67           一旦有匹配的,就执行catch里面的处理,然后结束了try...catch
 68           继续执行后面的语句。
 69  */
 70
 71  public class ExceptionDemo2 {
 72     public static void main(String[] args) {
 73         // method1();
 74
 75         // method2();
 76
 77         // method3();
 78
 79         method4();
 80     }
 81
 82     public static void method4() {
 83         int a = 10;
 84         int b = 0;
 85         int[] arr = { 1, 2, 3 };
 86
 87         // 爷爷在最后
 88         try {
 89             System.out.println(a / b);
 90             System.out.println(arr[3]);
 91             System.out.println("这里出现了一个异常,你不太清楚是谁,该怎么办呢?");
 92         } catch (ArithmeticException e) {
 93             System.out.println("除数不能为0");
 94         } catch (ArrayIndexOutOfBoundsException e) {
 95             System.out.println("你访问了不该的访问的索引");
 96         } catch (Exception e) {
 97             System.out.println("出问题了");
 98         }
 99
100         // 爷爷在前面是不可以的
101         // try {
102         // System.out.println(a / b);
103         // System.out.println(arr[3]);
104         // System.out.println("这里出现了一个异常,你不太清楚是谁,该怎么办呢?");
105         // } catch (Exception e) {
106         // System.out.println("出问题了");
107         // } catch (ArithmeticException e) {
108         // System.out.println("除数不能为0");
109         // } catch (ArrayIndexOutOfBoundsException e) {
110         // System.out.println("你访问了不该的访问的索引");
111         // }
112
113         System.out.println("over");
114     }
115
116     // 两个异常的处理
117     public static void method3() {
118         int a = 10;
119         int b = 0;
120         int[] arr = { 1, 2, 3 };
121
122         try {
123             System.out.println(arr[3]);
124             System.out.println(a / b);
125             // System.out.println(arr[3]);
126         } catch (ArithmeticException e) {
127             System.out.println("除数不能为0");
128         } catch (ArrayIndexOutOfBoundsException e) {
129             System.out.println("你访问了不该的访问的索引");
130         }
131
132         System.out.println("over");
133     }
134
135     // 两个异常
136     public static void method2() {
137         int a = 10;
138         int b = 0;
139         try {
140             System.out.println(a / b);
141         } catch (ArithmeticException e) {
142             System.out.println("除数不能为0");
143         }
144
145         int[] arr = { 1, 2, 3 };
146         try {
147             System.out.println(arr[3]);
148         } catch (ArrayIndexOutOfBoundsException e) {
149             System.out.println("你访问了不该的访问的索引");
150         }
151
152         System.out.println("over");
153     }
154
155     // 一个异常
156     public static void method1() {
157         // 第一阶段
158         int a = 10;
159         // int b = 2;
160         int b = 0;
161
162         try {
163             System.out.println(a / b);
164         } catch (ArithmeticException ae) {
165             System.out.println("除数不能为0");
166         }
167
168         // 第二阶段
169         System.out.println("over");
170     }
171 }
时间: 2024-10-13 03:01:20

java 19 -2 异常以及tr...catch()的方法处理异常的相关文章

java 19 - 5 Throwable的几个常见方法

1 /* 2 在try里面发现问题后,jvm会帮我们生成一个异常对象,然后把这个对象抛出,和catch里面的类进行匹配. 3 如果该对象是某个类型的,就会执行该catch里面的处理信息. 4 5 异常中要了解的几个方法: 6 public String getMessage():异常的消息字符串 7 public String toString():返回异常的简单信息描述 8 此对象的类的 name(全路径名) 9 ": "(冒号和一个空格) 10 调用此对象 getLocalized

Java知识回顾 (6)表达式、方法、文件与异常

一.正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. Java 正则表达式和 Perl 的是最为相似的. java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式的编译表示.Pattern 类没有公共构造方法.要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象.该方法接受一个正则表达式作为它

JAVA 7新特性——在单个catch代码块中捕获多个异常,以及用升级版的类型检查重新抛出异常

在Java 7中,catch代码块得到了升级,用以在单个catch块中处理多个异常.如果你要捕获多个异常并且它们包含相似的代码,使用这一特性将会减少代码重复度.下面用一个例子来理解. Java 7之前的版本: 1 2 3 4 5 6 7 8 9 10 catch (IOException ex) {      logger.error(ex);      throw new MyException(ex.getMessage()); catch (SQLException ex) {      

Java 异常之 try catch finally--除数不为0

1 package com.intel.aug6; 2 3 import java.util.InputMismatchException; 4 import java.util.Scanner; 5 6 public class TestException2 { 7 8 public int divsion(int f1, int f2) { 9 return f1 / f2; 10 } 11 12 /* 13 * 在java除法中,允许浮点数运算时除 数为零,所得结果是Infinity 14

java 19 - 11 异常的注意事项

1 /* 2 * 异常注意事项: 3 * A:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类.(父亲坏了,儿子不能比父亲更坏) 4 * B:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常 5 * C:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws 6 */ 7 import java.text.ParseException; 8 import j

JAVA 处理程序异常,(try、catch、finally),(thorws)

一.try语句: try{//这里写可能出现异常的程序} catch(Exception e){//这里写如果出现异常怎么处理的程序} 二.throws语句 语法:函数方法()  throws Exception {} 三.try语句示例: import java.util.Scanner; public class Index{ public static void main(String[] args){ Scanner in = new Scanner(System.in); try{ S

java中异常处理机制 throw抛出自定义业务逻辑异常 throws继续抛出 catch捕获后会自动继续抛向调用方法

package com.swift; public class Exception_TestC { public static void main(String[] args) { /* * 第5题: 有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个 * 方法a,请在这个方法中调用b,然后抛出异常.在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕 捉异常的信息.Java异常的处理机制 * * 如果try或cat

Java网络编程从入门到精通(19):套接字(Socket)的异常

在Socket类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类.在Socket类的方法中抛出最多的就是SocketException,其余还有七个异常可供Socket类的方法抛出.这些异常的继承关系如图1所示.其中灰色背景框所描述的例外就是Socket类的方法可能抛出的异常. 图1  异常类继承关系图 public class IOException extends Exception 这个异常是所有在Socket类的方法中抛出的异常的父类.因此,在

java 19 - 10 自定义异常的实现和测试

1 /* 2 * java不可能对所有的异常情况都考虑到,所以,在实际的开发中,我们可能需要自己定义异常. 3 * 而我们自己随意的写一个类,是不能作为异常类来看的,要想你的类是一个异常类,就必须继承自Exception或者RuntimeException 4 * 5 * 两种方式: 6 * A:继承Exception 编译期异常 7 * B:继承RuntimeException 运行期异常 8 */ 9 public class MyException extends Exception {