尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况。这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwable的一个子类)。你的子类不需要实际执行什么——它们在类型系统中的存在允许你把它们当成异常使用。

Exception类自己没有定义任何方法。当然,它继承了Throwable提供的一些方法。因此,所有异常,包括你创建的,都可以获得Throwable定义的方法。这些方法显示在表中。

你还可以在你创建的异常类中覆盖一个或多个这样的方法。

Throwable 定义的方法

方法 描述
Throwable fillInStackTrace( ) 返回一个包含完整堆栈轨迹的Throwable对象,该对象可能被再次引发
String getLocalizedMessage() 返回一个异常的局部描述
String getMessage( ) 返回一个异常的描述
void printStackTrace( ) 显示堆栈轨迹
void printStackTrace(PrintStreamstream) 把堆栈轨迹送到指定的流
void printStackTrace(PrintWriterstream) 把堆栈轨迹送到指定的流
String toString( ) 返回一个包含异常描述的String对象。当输出一个Throwable对象时,该方法被println( )调用

下面的例子声明了Exception的一个新子类,然后该子类当作方法中出错情形的信号。它重载了toString( )方法,这样可以用println( )显示异常的描述。

// This program creates a custom exception type.
class MyException extends Exception { private int detail; MyException(int a) { detail = a; } public String toString() { return "MyException[" + detail + "]"; }
}
class ExceptionDemo { static void compute(int a) throws MyException { System.out.println("Called compute(" + a + ")"); if(a > 10) throw new MyException(a); System.out.println("Normal exit"); } public static void main(String args[]) { try { compute(1); compute(20); } catch (MyException e) { System.out.println("Caught " + e); } }
}

该例题定义了Exception的一个子类MyException。该子类非常简单:它只含有一个构造函数和一个重载的显示异常值的toString( )方法。ExceptionDemo类定义了一个compute( )方法。该方法引发一个MyException对象。当compute( )的整型参数比10大时该异常被引发。

main( )方法为MyException设立了一个异常处理程序,然后用一个合法的值和不合法的值调用compute( )来显示执行经过代码的不同路径。下面是结果:

Called compute(1)
Normal exit
Called compute(20)
Caught MyException[20]

开课吧课堂之如何创建自己的异常子类相关推荐

  1. java在己有的类创子类怎么创_如何使用Java创建自己的异常子类

    Java不知道学了多少课时了,你知道如何使用Java创建自己的异常子类吗,Java的内置异常处理有哪些常见的错误呢,今天IT培训网小编就来给大家详细介绍下吧: 尽管Java的内置异常处理大多数常见错误 ...

  2. 开课吧课堂:Java的内置异常汇总列表!

    在标准包java.lang中,Java定义了若干个异常类.前面的例子曾用到其中一些.这些异常一般是标准类RuntimeException的子类.因为java.lang实际上被所有的Java程序引入,多 ...

  3. 开课吧课堂之如何创建多级类层次

    到目前分享的文章,我们会发现,我们已经用到了只含有一个超类和一个子类的简单类层次结构.然而,你可以如你所愿的建立包含任意多层继承的类层次. 前面提到,用一个子类作为另一个类的超类是完全可以接受的.例如 ...

  4. 开课吧课堂之未被捕获的异常

    在你学习在程序中处理异常之前,看一看如果你不处理它们会有什么情况发生是很有好处的.下面的小程序包括一个故意导致被零除错误的表达式. class Exc0 { public static void ma ...

  5. java在己有的类创子类怎么创_使用Java创建自己的异常子类

    尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况.这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwabl ...

  6. java在己有的类创子类怎么创_使用Java创建自己的异常子类...

    尽管java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况.这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwabl ...

  7. 计算机公开课课前互动小游戏,公开课前课堂小游戏

    引导语:一年级拼音教学小游戏玩是孩子的天性,游戏自然就会成为一年级拼音教学的常客!下面是yjbys小编收集了一些关于公开课前拼音课堂小游戏,希望对你有帮助. 篇一:公开课前课堂小游戏 适用范围: 用于 ...

  8. 创建两个Thread子类,第一个用run()方法启动,并捕获第二个Thread对象的句柄,然后调用wait()。第二个类的run()方法几秒后为第一个线程调用notifAll(),使第一个线程打印消息

    创建两个Thread子类,第一个用run()方法启动,并捕获第二个Thread对象的句柄,然后调用wait().第二个类的run()方法几秒后为第一个线程调用notifAll(),使第一个线程打印消息 ...

  9. 开课吧Java课堂:如何创建多线程

    大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: · 实现Runnable 接口. · 可以继承Thread类. 为什么Java有两种创建子线程的方法?所有的问题都归 ...

最新文章

  1. 卡迪夫大数据专业排名_2020年卡迪夫大学卫报排名前10热门专业
  2. android中的数据库操作(SQLite)
  3. nginx 二进制包安装mysql_二进制安装mysql5.7
  4. FileStream功能被禁用
  5. python路径相关小问题
  6. java 类型转string类型_java常用类String与其他数据类型之间的转化
  7. Android 读取Assets资源
  8. 基于Python3-Pygame的植物大战僵尸小游戏
  9. c# 图像识别 车辆型号【百度AI】
  10. 纳米盘资源搜索经验分享
  11. 思科路由器 密码设置和恢复
  12. 当古典音乐遇上NFT
  13. 密西根州立大学计算机qs分数,密歇根州立大学商科排名怎么样?2021年密歇根州立大学QS商科硕士排名商业分析硕士专业排名第20...
  14. android连接wifi不能上网,手机已经连接wifi但无法上网的详细解决方法
  15. 林奇社区群主招募!福利福利福利!
  16. 计算机基础知识是一级吗,计算机二级和初级的区别 初级是一级吗
  17. 苹果CMSV10最新初恋视界手机版模板
  18. (二)理解word2vec:实践篇
  19. 打开设备管理器出现MMC.EXE被阻止解决办法
  20. 玩聚SD:感谢ECVIP、盗盗、网贝、和菜头的博客推荐

热门文章

  1. [转载] Python版简易计算器的实现
  2. [转载] python 一个简单的天气预报程序
  3. elasticsearch-head的使用
  4. spring cloud config-配置中心
  5. Beta阶段第1周/共2周 Scrum立会报告+燃尽图 06
  6. springMVC 全局异常处理
  7. C语言 NUL、NULL及eof
  8. 雷军自述:我惨痛的大学创业失败经历
  9. 在ruby使用终端启用外部程序
  10. 漫谈 - 从技术业务骨干走向管理