java中异常处理机制 throw抛出自定义业务逻辑异常 throws继续抛出 catch捕获后会自动继续抛向调用方法

package com.swift;

public class Exception_TestC {

    public static void main(String[] args) {

        /*
         * 第5题: 有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个
         * 方法a,请在这个方法中调用b,然后抛出异常。在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕 捉异常的信息。Java异常的处理机制
         * 
         * 如果try或catch中有return,执行try catch finally return,catch的执行看try中是否真有异常 
         * throw是抛出异常 throws是声明异常,throw用于方法体中,用来抛出一个实际的异常对象,使用throw后,要么使用try
         * catch捕获异常,要么使用throws声明异常 catch中可以再次throw抛出异常,以便调用其方法再次捕获并处理
         * 自定义异常用于标记业务逻辑的异常,避免与标准异常混淆
         */
        new TestC().c();
    }
}

class A {

    public void a() throws Exception {

        new B().b();

    }

}

class B {

    public void b() {
        try {
            int a = -1;
            if (a < 0) {
                throw new MyException("B....不能使用负数..throw by ClassB.methodB");
            }
        } catch (MyException e) {
            e.printStackTrace();
        }
    }

}

class TestC{
    
    public void c() {

        try {
            new A().a();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class MyException extends Exception {
    public MyException(String msg) {
        super(msg);
    }
}
原文地址:https://www.cnblogs.com/qingyundian/p/8283490.html