博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java自定义异常类
阅读量:5150 次
发布时间:2019-06-13

本文共 1867 字,大约阅读时间需要 6 分钟。

自定义异常 : 步骤: ­ 

一:创建一个类继承于Throwable或其子类; ­ 
二:添加构造方法; ­ 
三:在一个方法中使用throw抛出异常 ­ 
四:在另一个方法中捕获并处理异常 ­ 
示例: 
一、继承Exception类 

Java代码
  
  1. public class MyFirstException extends Exception {  
  2. public MyFirstException() {  
  3. super();  
  4. }  
  5. public MyFirstException(String msg) {  
  6. super(msg);  
  7. }  
  8. public MyFirstException(String msg, Throwable cause) {  
  9. super(msg, cause);  
  10. }  
  11. public MyFirstException(Throwable cause) {  
  12. super(cause);  
  13. }  
  14. //自定义异常类的主要作用是区分异常发生的位置,当用户遇到异常时,  
  15. //根据异常名就可以知道哪里有异常,根据异常提示信息进行修改。  
  16. }  

二、 继承Throwable 类 

Java代码
  
  1. public class MySecondException extends Throwable {  
  2. public MySecondException() {  
  3. super();  
  4. }  
  5. public MySecondException(String msg) {  
  6. super(msg);  
  7. }  
  8. public MySecondException(String msg, Throwable cause) {  
  9. super(msg, cause);  
  10. }  
  11. public MySecondException(Throwable cause) {  
  12. super(cause);  
  13. }  
  14. }  

三、测试 

Java代码
  
  1. /** 
  2. * 自定义异常类的使用 
  3. * @author new 
  4. * 
  5. */  
  6. public class TestMyException {  
  7. public static void firstException() throws MyFirstException{  
  8. throw new MyFirstException("\"firstException()\" method occurs an exception!");  
  9. }  
  10.   
  11. public static void secondException() throws MySecondException{  
  12. throw new MySecondException("\"secondException()\" method occurs an exception!");  
  13. }  
  14. public static void main(String[] args) {  
  15. try {  
  16. TestMyException.firstException();  
  17. TestMyException.secondException();  
  18. catch (MyFirstException e1){  
  19. System.out.println("Exception: " + e1.getMessage());  
  20. e1.printStackTrace();  
  21. catch (MySecondException e2){  
  22. System.out.println("Exception: " + e2.getMessage());  
  23. e2.printStackTrace();  
  24. }  
  25. //当一个try块后面跟着多个catch块时,如果发生的异常匹配第一个catch块的参数,便将异常处理权利交给第一个catch块。  
  26. //如果发生的异常与第一个catch块不匹配,便看是否与第二个catch块匹配,依次下去,如果到最后依然无法匹配该异常,  
  27. //便需要在方法声明中添加一条throw语句,将该异常抛出。  
  28. //因此,在有多个catch块,而且每次处理的异常类型具有继承关系时,应该首先catch子类异常,再catch父类异常。  
  29. //比如,如果MySecondException继承MyFirstException,那么最好将catch(MySecondException e2)放在前面  
  30. //把catch (MyFirstException e1)放在后面。  
  31. }  

 

转载于:https://www.cnblogs.com/winkey4986/archive/2011/12/13/2285768.html

你可能感兴趣的文章
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
01: socket模块
查看>>
mysql触发器
查看>>
淌淌淌
查看>>
web页面实现指定区域打印功能
查看>>
win10每次开机都显示“你的硬件设置已更改,请重启电脑……”的解决办法
查看>>
C++有关 const & 内敛 & 友元&静态成员那些事
查看>>
函数积累
查看>>
Swift 入门之简单语法(六)
查看>>
shim和polyfill有什么区别
查看>>
〖Python〗-- IO多路复用
查看>>
栈(括号匹配)
查看>>
Java学习 · 初识 面向对象深入一
查看>>
源代码如何管理
查看>>
vue怎么将一个组件引入另一个组件?
查看>>
bzoj1040: [ZJOI2008]骑士
查看>>
LeetCode 74. Search a 2D Matrix(搜索二维矩阵)
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>