Chinaunix首页 | 论坛 | 博客
  • 博客访问: 519376
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-21 13:40
个人简介

技术改变命运

文章分类

全部博文(184)

文章存档

2020年(16)

2017年(12)

2016年(156)

我的朋友

分类: Java

2017-08-05 23:42:45

在用throw抛出异常实例时,应该在方法签名中需要使用throws抛出异常,将该异常交给方法调用者来处理。直到main方法,如果依然没有处理,JVM会总之程序,打印异常的跟踪栈信息。
实例代码如下:

点击(此处)折叠或打开

  1. package BurningT;
  2. //import BurningT.AuctionException;
  3. class AuctionException extends Exception
  4. {
  5.     public AuctionException()
  6.     {
  7.         
  8.     }
  9.     public AuctionException(String s)
  10.     {
  11.         super(s);
  12.     }
  13. }
  14. public class AuctionTest{
  15.     private double initPrice = 30.0;
  16.      public void auction(String s) throws AuctionException//如果没有throws语句,这不能通过javac编译
  17.     {
  18.         double d = 0.0;
  19.         try
  20.         {
  21.             d = Double.parseDouble(s);
  22.         } catch (Exception e)
  23.         {
  24.             e.printStackTrace();
  25.             throw new AuctionException("s is not a String");
  26.         }
  27.         if (d < initPrice)
  28.         {
  29.             throw new AuctionException("The price is not resonable");
  30.         }
  31.         initPrice = d;
  32.     }
  33.     public static void main(String[] args)
  34.     {
  35.         AuctionTest at = new AuctionTest();
  36.         try
  37.         {
  38.             at.auction("str");
  39.         }
  40.         catch(AuctionException ae)
  41.         {
  42.             System.err.println(ae.getMessage());
  43.         }
  44.     }
  45. }
没有throws语句使用javac编译结果如下:
E:\HelloFile\javaTest>javac -d . AuctionTest.java
AuctionTest.java:25: 错误: 未报告的异常错误AuctionException; 必须对其进行捕获或声明以便抛出
                        throw new AuctionException("s is not a String");
                        ^
AuctionTest.java:29: 错误: 未报告的异常错误AuctionException; 必须对其进行捕获或声明以便抛出
                        throw new AuctionException("The price is not resonable");
                        ^
AuctionTest.java:40: 错误: 在相应的 try 语句主体中不能抛出异常错误AuctionException
                catch(AuctionException ae)
                ^
3 个错误
正确使用throws后:运行结果如下:
E:\HelloFile\javaTest>java BurningT.AuctionTest
java.lang.NumberFormatException: For input string: "str"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
        at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
        at java.lang.Double.parseDouble(Double.java:538)
        at BurningT.AuctionTest.auction(AuctionTest.java:21)
        at BurningT.AuctionTest.main(AuctionTest.java:38)
s is not a String
搞了一个多小时才发现忘写了一个throws AuctionException



阅读(3223) | 评论(0) | 转发(0) |
0

上一篇:java Iterator

下一篇:JavaScript图片库(1)

给主人留下些什么吧!~~