zoukankan      html  css  js  c++  java
  • 自定义异常、异常处理注意点

     

     自定义异常类并调用的步骤:

    1、通过继承方式定义一个异常类

    1 //继承父类
    2 public class MyException extends Exception {
    3     public MyException() {
    4     }
    5     public MyException(String msg){
    6         super(msg);
    7     }
    8 }

    2、方法内部抛出异常

     1 public class User {
     2     
     3     private  int weight ;
     4     public User() {
     5     }    
     6     public int getWeight() {
     7         return weight;
     8     }
     9     //必须用throws来声明,否则编译器会提示“Unhandled exception type Exception”错误警告。
    10     public void transfer(int weight) throws MyException{11         if(weight<100||weight>200)
    12             throw new MyException("体重不达标");
    13         this.weight = weight;
    14     }
    15 }

    MyException继承的是Exception类,属于可检查异常(checked exception),必须声明throws。

    另外一篇文章后半部分有具体解释:https://www.cnblogs.com/codercql/p/13394862.html

    3、异常的捕获和处理

     1 import java.util.Scanner;
     2 
     3 public class FinalTest {
     4 
     5     public static void main(String[] args) {
     6         int weight;
     7         System.out.println("输入体重:");
     8         Scanner input = new Scanner(System.in);
     9         weight=input.nextInt();
    10         User user = new User();
    11         try {//使用try-catch来捕获异常
    12             user.transfer(weight);//调用方法,如果抛出异常,若类型匹配那么catch捕获执行内部代码
    13         }catch(MyException e) {
    14             System.err.println(e.getMessage());
    15             //执行完毕后不返回try后面地语句,直接顺序执行
    16         }
    17         System.out.println("继续...");
    18     }
    19 
    20 }

     运行结果:

    异常处理注意点:

    • 如果方法没有在父类中声明异常,就不能在子类中对其进行继承来声明异常。
    • catch块中异常被指定的顺序很重要,如果父类的catch块出现在子类catch块之前就会出现编译错误。
    try {                 
            //
                     }catch (ArithmeticException e) {
                                    //子类异常出现在前
                     }catch (Exception e) {
                        //
                    }
    • 同样的代码处理多个异常,用竖线隔开,其中之一被捕获,就执行代码。
        try {                 
            //
                     }catch (ArithmeticException | InputMismatchException e) {
                         System.err.println("出现错误:被除数和除数必须是整数,"+"除数不能为零。");
                         System.out.println(e.getMessage());
                     }
    • printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
    • getMessage()返回描述该异常对象的信息。

    //执行完毕后不返回try后面的语句,直接顺序执行
  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/codercql/p/13407311.html
Copyright © 2011-2022 走看看