zoukankan      html  css  js  c++  java
  • java自定义异常类

    自定义异常 : 步骤: ­ 

    一:创建一个类继承于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. }  
  • 相关阅读:
    五分钟,让你明白MySQL是怎么选择索引《死磕MySQL系列 六》 咔咔
    MySQL统计总数就用count(*),别花里胡哨的《死磕MySQL系列 十》 咔咔
    C++类型转换:const_cast 和reinterpret_cast
    C++类型转换
    C++中*和&的用法
    CMake简介
    文件和流IO
    字节存储:大端字节和小端字节
    离线的Window 10无法安装.Net Framework 3.5的解决办法
    KeyTool 使用简介
  • 原文地址:https://www.cnblogs.com/winkey4986/p/2285768.html
Copyright © 2011-2022 走看看