Java异常处理

异常的层次结构
  所有的异常类都是 java.lang.Exception 类的子类型。异常类都是 Throwable 类的子类。除了异常类 Error 类也是由 Throwable 类产生的的子类
1. public String getMessage()
返回关于发生异常的细节信息,这些信息在Throwable的构造函数中被初始化
2. public Throwable getCause()
返回发生异常的原因,由 Throwable 对象来表示
3. public String toString()
返回与getMessage()的结果相联系的类的名称
4. public void printStackTrace()
打印 toString()跟踪错误输出流的栈地址的结果
5. public StackTraceElement [] getStackTrace()
返回一个数组,其中包含每个元素在栈的地址,元素的索引0代表调用栈的顶部,最后一个元素表示方法调用栈的底部
6. public Throwable fillInStackTrace()
用当前栈地址来填充 Throwable 对象的栈地址,添加到任何先前的栈地址信息

 1 package Test;
 2
 3 import java.util.Scanner;
 4
 5 public class test1 {
 6     public static void main(String[] args) throws InsufficientFundsException{
 7         Scanner input = new Scanner(System.in);
 8         System.out.println("Enter two integers: ");
 9         int number1 = input.nextInt();
10         int number2 = input.nextInt();
11         //1.
12 //        if(number2 != 0)
13 //            System.out.println(number1 + "/" + number2 + " is " + (number1 / number2));
14 //        else
15 //            System.out.println("你好");
16         //2.
17         try{
18             System.out.println(number1 + "/" + number2 + " is " + (number1 / number2));
19         }
20         //catch 关键字表示可被捕获的异常
21         catch(Exception e){
22             System.out.println("程序存在异常:"+e);
23         }finally {
24             System.out.println("结束");
25         }
26         //3.
27         if(number2 != 0){
28             System.out.println(number1 + "/" + number2 + " is " + (number1 / number2));
29         }else{
30             //抛出异常
31             throw new ArithmeticException("错了");
32
33 //            ArithmeticException ex = new ArithmeticException("OK~");
34 //            System.out.println(ex.getMessage());
35 //            //throw 关键字,称为抛出一个异常
36 //            throw ex;
37         }
38         //4.自定义异常处理
39         try{
40             System.out.println("开始");
41             check_test();
42         }catch(InsufficientFundsException e){
43             System.out.println(e.getScore()+"-"+e);
44         }finally{
45             System.out.println("结束");
46         }
47     }
48     public static void check_test() throws InsufficientFundsException{
49         double ac = 1.1;
50         System.out.println("check_test()");
51         throw new InsufficientFundsException(ac);
52     }
53 }

 1 package Test;
 2
 3 public class InsufficientFundsException extends Exception{
 4
 5     private double score;
 6     /**
 7      * 自定义异常处理方法
 8      * @param score
 9      */
10     public InsufficientFundsException(double score) {
11         super("Hello SuperMan");
12         this.score = score;
13     }
14
15     public double getScore(){
16         return score;
17     }
18 }

InsufficientFundsException.java

时间: 2024-10-20 02:45:31

Java异常处理的相关文章

深入理解Java异常处理机制

1. 引子 try-catch-finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的"教训"告诉我,这个东西可不是想象中的那么简单.听话.不信?那你看看下面的代码,"猜猜"它执行后的结果会是什么?不要往后看答案.也不许执行代码看真正答案哦.如果你的答案是正确,那么这篇文章你就不用浪费时间看啦. <span style="background-color: rgb(255, 255, 255

Java异常处理机制的秘密

一.结论 这些结论你可能从未听说过,但其正确性是毋庸置疑的,不妨先看看: 1.catch中throw不一定能抛回到上一层,因为finally中的return会抑制这个throw2.finally中throw一定能抛回上一层,因为此时其后的return不会被执行到(throw中断了正常的顺序流)3.在try/catch中return并不会直接返回上一层,而是先执行finally再返回 二.一段小程序 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

项目中java异常处理

一.java异常类介绍. Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类. 有一篇比较好的blog,http://blog.csdn.net/hguisu/article/details/6155636 介绍java异常. 二.异常处理方式. 在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常. 三.程序中使用. 2种处理方式 1.throw new 异常  在方法体上写throws

java异常处理和设计

在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能.因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议. 若有不正之处,请多多谅解和指正,不胜感激. 请尊重作者劳动成果,转载请标明

Java异常处理 “受控(checked)”的异常

示例程序: public class TestThrows { public static void main(String[] args) { FileInputStream fis = new FileInputStream("a.txt"); } } 为什么以上程序完全符合Java语法规范,但是却会报错呢? 修正: public class TestThrows { public static void main(String[] args) throws FileNotFoun

Java异常处理错误

Java异常处理错误 发现错误的最佳时期是在编译阶段,也就是在你运行程序之前.然而,编译期间并不能找出所有的错误,余下的问题必须在运行阶段解决.这就需要错误源通过某种方式把适当的信息传给某个接收者,该接收者知道如何处理这个问题. Java中的异常处理的目的在于通过使用少于目前数量的代码来简化大型,可靠的程序的生成,并且通过这种方式可以使你更加自信:你的应用中没有未处理的错误. 异常这个词有我对此感到意外的意思.问题出现了,你也许不清楚该如何处理,但你的确知道不该置之不理:你要停下来,看看是不是有

基础知识《十一》Java异常处理总结

Java异常处理总结 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链机制,从而便于跟

Java 异常处理

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常. 异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据. 要打开的文件不存在. 网络通信时连接中断,或者JVM内存溢出. 这些异常有的是因为用户错误引起,

java异常处理(父子异常的处理)

我当初学java异常处理的时候,对于父子异常的处理,我记得几句话“子类方法只能抛出父类方法所抛出的异常或者是其子异常,子类构造器必须要抛出父类构造器的异常或者其父异常”.那个时候还不知道子类方法为什么要这样子抛出异常,后来通过学习<Thinking in Java>,我才明白其中的道理,现在我再来温习一下. 一.子类方法只能抛出父类方法的异常或者是其子异常 对于这种限制,主要是因为子类在做向上转型的时候,不能正确地捕获异常 package thinkinginjava; public abst

Java异常处理总结Exception\Error

Java异常处理总结Exception\Error 2012-12-28 08:17:17|  分类: JAVA |  标签:java  |举报|字号 订阅 Java异常处理总结 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,