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

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

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

表 10-3 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]

通过以上教程,你是否学会了使用Java创建自己的异常子类了呢,如果学会了,就赶紧学习下一篇吧!

java在己有的类创子类怎么创_如何使用Java创建自己的异常子类相关推荐

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

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

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

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

  3. final类是否可以被代理_浅谈Java【代理设计模式】——看这篇文章就懂了

    什么是代理模式 为其他对象提供一种代理以控制对这个对象的访问. 为什么使用代理模式 中介隔离:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的 ...

  4. java类二次加载_深入理解java之类加载器

    一.类与类加载器 类加载器:实现加载阶段的第一步,通过一个类的全限定名来将这个类的二进制字节流加载进jvm. 类与类加载器:任意一个类唯一性都是由它本身和加载它的类加载器确定,两个类是否相等在它们是由 ...

  5. 【java笔记】File类(2):获取,判断,创建,删除,遍历目录方法

    [java笔记]File类(1)概述,静态成员,构造方法_m0_52043808的博客-CSDN博客 获取功能方法: public String getAbsolutePath():返回此File的绝 ...

  6. 开课吧课堂之如何创建自己的异常子类

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

  7. java语言 写一算法求其叶子数目_数据结构(Java)在线作业1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树共有( )个结点。A. n+1B. 2n-1...

    数据结构(Java)在线作业1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树共有( )个结点.A. n+1B. 2n-1 数据结构(Java)在线作业 1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树 ...

  8. Java中final类是存放在哪_详解Java中的final关键字

    1 修饰属性或者变量 无论属性是基本类型还是引用类型,作用都是变量里面存放的"值"不可变 经常和static关键字一起使用,作为常量 1 基本类型,变量放的是实实在在的值,如1,& ...

  9. java 包结构 枚举类_Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类...

    因为Jdk7及以前的日期时间类的不方便使用问题和线程安全问题等问题,2005年,Stephen Colebourne创建了Joda-Time库,作为替代的日期和时间API.Stephen向JCP提交了 ...

最新文章

  1. 9-7NOIP模拟赛总结
  2. 【信息抽取】如何使用BERT进行关系抽取
  3. 毕业的答辩需要的要求(从校方的角度)
  4. h5策划书_一个好的H5营销活动设计要如何进行策划
  5. Libra教程之:执行Transactions
  6. linux ls 配色方案,ubuntu 更改ls配色方案
  7. 漫谈IBM Power VM历史及其特点
  8. Django开发利器——django-debug-toolbar
  9. CAD2020学习教程
  10. linux内核调用串口,linux驱动之串口驱动框架
  11. 大数据之实时数据分析之Apache Doris数据库
  12. Python实战回归模型-消费者人群画像-信用智能评分(基于中国移动用户数据)
  13. 生活随记 - 被摩拜app忽悠了
  14. 微信公众号如何变得更好_五个使Windows变得更好的绝对必要的实用程序
  15. 使用终端生成icns,icon文件
  16. 考研政治——马克思辩证法中的两大特征和五大范畴
  17. 联想笔记本进入pe_联想小新笔记本怎么进入bios设置U盘启动
  18. 做人,别伤人,别骗人,别负人!
  19. JDK8 超详细,肝
  20. 《Kubernetes故障篇:Kubernetes Node节点DiskPressure异常处理》

热门文章

  1. jupyter分割代码块_科研分享—Python根据关键词自动抓取Pubmed文献标题(附全部代码)文末有福利...
  2. 剑指offer: 面试题40. 最小的k个数
  3. 剑指offer:面试题17. 打印从1到最大的n位数
  4. js中Object类型和Array类型的变量被赋值(复制)给其他变量后,修改被赋值(复制)的新变量的值,会影响原始变量的值,这是为什么呢?
  5. 在Ubuntu 16.04.5 LTS上利用python中的PIL模块压缩一百多兆的单张图片实操
  6. 内存分配器设计的演进
  7. leetcode-376 摆动序列
  8. Linux进程描述符task_struct结构体简析
  9. 矢量图面层和线层相交得到相交后的线层文件(gis相交)
  10. 浅析对象访问属性的.和[]方法区别