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后面的语句,直接顺序执行
  • 相关阅读:
    web标准化布局
    最全前端资源汇集
    SVN使用教程
    FullPage.js中文帮助文档API
    如何选字体(font-family)
    网站禁止复制类型的属性
    Web前端学习方向
    div 命名规范! (野路子出来的好好看看)
    浏览器兼容处理
    JSONP 跨域问题
  • 原文地址:https://www.cnblogs.com/codercql/p/13407311.html
Copyright © 2011-2022 走看看