JAVA学习--异常Exception的处理

* 二、如何处理Exception的异常
 * Java提供的是异常处理的抓抛模型
 *
1."抛":当我们执行代码时,一旦出现异常,就会在异常的代码处生成一个对应的异常类型的对象,并
 *       
将此对象抛出。(自动抛出   / 手动抛出)
 *       
>一旦抛出此异常类的对象,那么程序就终止执行
 *       
>此异常类的对象抛给方法的调用者。
 * 2."抓":抓住上一步抛出来的异常类的对象。如何抓?即为异常处理的方式
 *   
java 提供了两种方式用来处理一个异常类的对象。
 *   
处理的方式一:
 *   
try{
 *  
   
 //可能出现异常的代码
 *   
}catch(Exception1 e1){
 *  
   
 //处理的方式1
 *   
}catch(Exception2 e2){
 *  
   
 //处理的方式2
 *   
}finally{
 *  
   
 //一定要执行的代码
 *   
}
 * 注:1.try内声明的变量,类似于局部变量,出了try{}语句,就不能被调用
 *   
2.finally是可选的。
 *   
3.catch语句内部是对异常对象的处理:
 *       
>getMessage();  printStackTrace();
 *   
4.可以有多个catch语句,try中抛出的异常类对象从上往下去匹配catch中的异常类的类型,一旦满足
 *     
就执行catch中的代码。执行完,就跳出其后的多条catch语句
 *   
5.如果异常处理了,那么其后的代码继续执行。
 *   
6.若catch中多个异常类型是"并列"关系,孰上孰下都可以。
 *     
若catch中多个异常类型是"包含"关系,须将子类放在父类的上面,进行处理。否则报错!
 *   
7.finally中存放的是一定会被执行的代码,不管try中、catch中是否仍有异常未被处理,以及是否有return语句。

*   
8.try-catch是可以嵌套的。
 *  
 
 * 三、对于运行时异常来说,可以不显式的进行处理。
 *   
对于编译时异常来说,必须要显式的进行处理。

  1 import java.io.File;
  2 import java.io.FileInputStream;
  3 import java.io.FileNotFoundException;
  4 import java.io.IOException;
  5 import java.util.Date;
  6 import java.util.InputMismatchException;
  7 import java.util.Scanner;
  8
  9 import org.junit.Test;
 10
 11
 12 public class TestException1 {
 13     // 编译时异常
 14     @Test
 15     public void test6() {
 16         FileInputStream fis = null;
 17         try {
 18             fis = new FileInputStream(new File("hello.txt"));
 19             int b;
 20             while ((b = fis.read()) != -1) {
 21                 System.out.print((char) b);
 22             }
 23
 24         } catch (FileNotFoundException e1) {
 25             System.out.println("文件找不到了!");
 26         } catch (IOException e1) {
 27             System.out.println(e1.getMessage());
 28         } finally {
 29             try {
 30                 fis.close();
 31             } catch (IOException e) {
 32                 // TODO Auto-generated catch block
 33                 e.printStackTrace();
 34             }
 35         }
 36     }
 37
 38     // 常见的运行时异常
 39     // 4.空指针异常:NullPointerExcetion
 40     @Test
 41     public void test5() {
 42         // Person p = new Person();
 43         // p = null;
 44         // System.out.println(p.toString());
 45
 46         try {
 47             String str = new String("AA");
 48             str = null;
 49             System.out.println(str.length());
 50         } catch (Exception e) {
 51             // e.printStackTrace();
 52             System.out.println("出现空指针的异常了");
 53         }
 54     }
 55
 56     // 3.类型转换异常:ClassCastException
 57     @Test
 58     public void test4() {
 59         try {
 60             Object obj = new Date();
 61             String str = (String) obj;
 62         } catch (ClassCastException e) {
 63             System.out.println("出现类型转换的异常了");
 64             //System.out.println(10 / 0);
 65         } catch (Exception e) {
 66             e.printStackTrace();
 67         } finally {
 68             System.out.println("hello!美女!");
 69         }
 70         // String str1 = (String)new Date();
 71     }
 72
 73     // 2.算术异常:ArithmeticException
 74     @Test
 75     public void test3() {
 76         try {
 77             int i = 10;
 78             System.out.println(i / 0);
 79         } catch (Exception e) {
 80             // e.printStackTrace();
 81             System.out.println(e.getMessage());
 82         }
 83     }
 84
 85     // 1.数组下标越界的异常:ArrayIndexOutOfBoundsException
 86     @Test
 87     public void test2() {
 88         try {
 89             int[] i = new int[10];
 90             // System.out.println(i[10]);
 91             System.out.println(i[-10]);
 92         } catch (Exception e) {
 93             System.out.println("出现异常了!");
 94         }
 95     }
 96
 97     @Test
 98     public void test1() {
 99         Scanner s = new Scanner(System.in);
100         try {
101             int i = s.nextInt();
102             System.out.println(i);
103         } catch (InputMismatchException e) {
104             System.out.println("出现类型不匹配的异常了!");
105         }
106     }
107 }
时间: 2024-10-22 13:25:47

JAVA学习--异常Exception的处理的相关文章

JAVA学习--异常Exception

一.异常的体系结构 * java.lang.Throwable  *         |-----Error:错误,程序中不进行处理  *         |-----Exception:异常,要求在编写程序时,就要考虑到对这些异常的处理  *                 |-----编译时异常:在编译期间会出现的异常(执行javac.exe命令时,出现异常) *                 |-----运行时异常:在运行期间出现的异常(执行java.exe命令时,出现异常)  *  *

java学习------异常

异常,什么是异常?简单的说异常是一种处理机制.将用户所没有考虑到的错误进行处理.由于程序猿无法保证一段代码永远不会出错. java中异常通过5个keyword:try , catch , throw , throws , finally. 当中,trykeyword后紧跟一个花括号括起来的代码块(花括号不可省略)简称try块. 它里面放置可能引发异常的代码. catch后相应异常类型和一个代码块,用于表明该catch块用于处理这样的类型的代码块.多个catch块后还能够紧跟一个finally块,

JAVA学习-异常的捕获及处理

1.认识异常(了解) 异常指的是导致程序中断的一种指令流.那么下面先通过两个程序来比较程序出现异常与没有出现异常的区别. 范例:程序不出现异常 public class TestDemo { public static void main(String args[]) { System.out.println("1.除法计算开始.") ; System.out.println("2.除法计算:" + (10 / 2)) ; System.out.println(&q

Atitit java的异常exception 结构Throwable类

1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.SuppressedException被屏蔽的异常2 1.4. try-with-resources语句2 1.5. 八.异常说明的继承.2 1.1. Throwable类 2.StackTrace栈轨迹 栈轨迹记录了程序从开始到异常抛出点所调用的方法.通过StackTraceElement[] getStackTrace()可以获得一个StackTraceElement的数组,每个S

java开发异常Exception集锦

背景:整理开发过程中的异常问题 java.lang.Exception: No tests found matching 一般出现在新导入的工程中.在sts中通过open project的方式导入工程后,运行test用例,报No tests found matching错误. 根因是build path问题.解决方案: 1 查看jdk版本,更新到目前的版本 2 删除项目中的junit包,右键 Build Path, addLibraay, 添加Junit4,在build path中通过add l

Java学习-异常2

1.异常处理的第一种方式是:上抛[throws] 2.异常处理的第二种方式是:try....catch..如果不想让调用程序知道该异常发生了,被调用的程序应该使用try...catch..进行异常捕捉处理 -----------------------例子------------------------- -------------------------------------------------------------- 3.快捷键: syso+alt+/   :补充输出 try + a

异常Exception in thread "AWT-EventQueue-XX" java.lang.StackOverflowError

今天太背了,bug不断,检查到最后都会发现自己脑残了,粗心写错,更悲剧的是写错的时候还不提示错. 刚才有遇到一个问题,抛了这个异常Exception in thread "AWT-EventQueue-XX" java.lang.StackOverflowError XX有好几个值,我遇到了2,7,20,其实他们都是一个错,StackOverflowError,对,就是栈溢出,为什么会栈溢出呢?我遇到的问题是我写了一个方法,又自己去调用自己,造成了递归,而这个递归又停不下来,造成了栈溢

《java中异常和错误》

异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception. 错误:它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务

浅谈java异常[Exception]

本文转自:focusJ 一. 异常的定义 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常.绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败.之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意. 记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也